Las vistas en Yii

Introducción.

  • Son archivos PHP convencionales.
  • Pueden incluír elementos de interfaz de usuario basados en Yii.
  • Se recomienda que las vistas accedan a la información de los modelos pero que no los modifiquen.
  • Deben permanecer lo mas simples posibles, lógicas complejas deberían llevarse hasta el controlador.
  • El nombre del archivo donde se almacena la vista corresponde con el identificador junto con la extensión .php.
    • La vista edit se almacenará en el archivo edit.php.
  • Los archivos de las vistas se almacenan bajo la ruta protected/views/<Identificador del controlador>.
  • Desde la vista es posible acceder a los atributos del controlador a través del objeto $this.
  • Para procesar una vista se debe invocar el método CController::render(<Identificador de vista>).
  • Es posible pasar explícitamente información desde el controlador a la vista en el momento de su generación.
    $this -> render('edit', array (
        'variable1' => $valor1,
        'variable2' => $valor2
    ));
    • En la vista edit se podrá acceder a $variable1 y $variable2 como variables convencionales.

Layouts (diseños).

  • El layout permite especificar el diseño común y constante de la interfaz de usuario.
  • Evita la necesidad de agregar elementos comúnes (archivos javascript y css, título, subtítulo, menú izquierdo, pies, etc) a todas las páginas en cada una de ellas.
  • El layout aplica a todo el sitio web y se aplica automáticamente al invocar el método render.
  • Para generar una vista sin el layout es necesario utilizar el método renderPartial.
  • El layout utilizado por defecto se encuentra en views/layouts/main.php.
    • Es posible modificar esto alterando CWebApplication::layout para toda la aplicación o CController::layout para todas las acciones del controlador.
  • En el layout se debe incluír la variable $content para especificar la ubicación en la que se agregará el contenido de la vista específica al controlador/acción ejecutado (parte no constante de la interfaz de usuario).

Widgets.

  • Los widgets son componentes predefinidos para la presentación de la interfaz de usuario.
  • Generalmente agregan una funcionalidad gráfica compleja, específica y autocontenida.
  • Heredan de CWidget.
  • Su forma de invocarlos depende de si tienen o no contenido en su cuerpo.
    • Sin contenido en su cuerpo.
      <? php $this -> widget('ruta.a.la.ClaseWidget'); ?>
    • Con contenido en su cuerpo.
      <? php $this -> beginWidget('ruta.a.la.ClaseWidget'); ?>
      ... contenido del cuerpo del Widget ...
      <? php $this -> endWidget(); ?>
  • Es posible definir valores iniciales para los atributos del Widget durante su invocación con widget o beginWidget.
    $this -> widget('CMaskedTextField', array (
        'mask' => '99/99/9999'
    ));

Creación de nuevos Widgets.

  • El nuevo widget debe heredar de CWidget e implementar los métodos init y run.
    class NuevoWidget extends CWidget
    {
        public function init()
        {
            // Invocado por CController::beginWidget().
        }
    
        public function run()
        {
            // Invocado por CController::endWidget().
        }
    }
  • Tienen sus propias vistas y se ubican por defecto en el directorio views bajo el directorio que contiene la clase del widget.
  • Estas vistas se generan invocando CWidget::render().

Vistas del sistema.

  • Estas vistas se utilizan para mostrar errores del sistema o información de registro.
  • Las excepciones de HTTP (CHTTPException) se despliegan con las vistas errorXXX donde XXX es el código del error HTTP generado.
  • Las vistas por defecto provistas por Yii se ubican en framework/views y pueden personalizarse definiéndolas en protected/views/system.

Enlaces.

Leave a Reply

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