Introducción al MVC de Yii – Parte II

Vista.

  • Es un archivo de PHP con elementos de interfaz de usuario.
  • Su implementación no debe alterar el estado de los modelos.
  • Sólo debe dedicarse a generar la presentación de la respuesta al usuario, así los modelos deberán ser gordos y los controladores delgados.
  • El nombre del archivo que la contiene es “{VistaId}.php” y se ubica bajo la ruta protected/controllers/{ControladorId}.
  • La generación de la vista se realiza con la instrucción CController::render(‘VistaId’, array(‘var’ => $valor)).  De esta manera $var se convierte en una variable local para la vista.
  • Desde la Vista es posible acceder al controlador a través del objeto $this y consecuentemente a sus atributos: $this -> atributo.

Layout.

  • Es un tipo especial de Vista cuya funcionalidad permite componer la presentación a partir de varias vistas para generar un contenido estandarizado.  Por ejemplo, mantener secciones de cabecera, pies, menú izquierdo y contenido.
  • El contenido de la Vista se incluye en el Layout a través de la variable $content.
  • Se incluye automáticamente durante la ejecución de CController::render().  Si se desea evitar este comportamiento se debe utilizar CController::renderPartial().
  • Por defecto su contenido se toma desde protected/views/layouts/main.php.  Esto se puede personalizar modificando CWebApplication::layout (a nivel de toda la aplicación) o CController::layout (a nivel del controlador actual unicamente).

Widget.

  • Su clase base es CWidget.
  • Son componentes autocontenidos de interfaz de usuario y su utilidad es la de permitir crear con ellos interfaces mas completas.  Por ejemplo un calendario y un campo de autocompletar.
  • Su utilización se puede realizar de dos maneras según su contenido.
    • Sin cuerpo.
      <?php this -> widget('ruta.al.Widget', array('atributo' => $valor)); ?>
    • Con cuerpo.
      <?php this -> beginWidget('ruta.al.Widget', array('atributo' => $valor)); ?>
      ... Cuerpo del Widget ...
      <?php this -> endWidget(); ?>
  • Su implementación se basa en dos métodos: init y run que son invocados por beginWidget y endWidget respectivamente.
  • Los Widgets cuentan con sus propias Vistas almacenadas en /views bajo el directorio donde se encuentra su clase.

Vistas del sistema.

  • Se utilizan para presentar errores del sistema o información de registro.
  • Su nombre corresponde con el formato errorXXX donde XXX es el código HTTP del error al que corresponden.
  • Las vistas predefinidas se localizan en framework/views y pueden personalizarse desplegando versiones nuevas bajo protected/views/system.

Módulo.

  • Su clase base es CWebModule.
  • Es una unidad autocontenida de software con sus propios modelos, vistas, controladores y demás componentes.
  • Permite desarrollar funcionalidades independientes (manejo de usuarios, manejo de contenido, etc.) que pueden reutilizarse fácilmente entre varias aplicaciones.
  • A diferencia de las Aplicaciones, un Módulo no puede ser desplegado por si mismo.
  • El nombre de la clase es “ucfirst({MóduloId})Module” y se ubica bajo la ruta protected/modules/{MóduloId}.
  • El esquelo del Módulo se puede crear a partir del comando “module MóduloId“de yiic.
  • Para utilizarse en una Aplicación debe ser declarado en la propiedad modules de protected/config/main.php de la siguiente manera.
    • Sin valores iniciales para sus propiedades.
      return array(
          ...
          'modules' => array('miModulo', ... ),
          ...
      );
    • Especificando valores iniciales para las propiedades de los módulos.
      return array(
          ...
          'modules' => array('miModulo' => array
                                           (
                                              'titulo' => 'Hola Mundo',
                                              'lontigud' => 50
                                           ),
                             ... ),
          ...
      );
  • Puede accederse a través del controlador de la siguiente manera: Yii::app() -> controlador -> modulo -> propiedades.
  • La ruta del requerimiento se complementa con el módulo: MóduloId/ControladorId/AcciónId.
  • Los Módulos puede contener a otros Módulos en su interior: MóduloExternoId/MóduloInternoId/ControladorId/AcciónId.

Enlaces.

One thought on “Introducción al MVC de Yii – Parte II”

  1. Tengo una pregunta:
    En un controlador estoy definiendo valores en unas variables de un módulo y cuando hago una llamada a otra acción del controlador, se pierden las variables del módulo.
    ¿Puedo mantener las variables definidas en un módulo durante la navegación en varios de sus controladores y acciones?

Leave a Reply

Your email address will not be published. Required fields are marked *