Cuando regresamos datos con el contenedor de variables ViewModel
desde nuestro
método de acción del controlador Zend Framework de alguna manera conoce el nombre
que corresponde al archivo de plantilla de vista. Por ejemplo, para nuestro
método aboutAction()
del IndexController
ZF3 usa automáticamente la plantilla
de vista about.phtml.
ZF3 determina el nombre correcto de la plantilla de vista por medio del nombre del módulo, el nombre del controlador y el nombre de la acción. Por ejemplo, la acción
IndexController::aboutAction()
que pertenece al móduloApplication
tendrá la plantilla de vista por defectoapplication/index/about.phtml
.
Si el nombre de nuestro controlador o acción tiene varias palabras en camel-case (como
UserRegistrationController
yregistrationStep1Action
), la plantilla de vista correspondiente será application/user-registration/registration-step-1.phtml (los nombres en mayúsculas se convierten en minúsculas y las palabras se separan por medio de guiones).
Además, el ViewModel
se puede usar para sobrescribir la plantilla de vista que
se toma por defecto. En realidad la clase ViewModel
es más que un contenedor
de variables. Adicionalmente permite especificar cuales plantillas de vista se
deben usar para imprimir la página. El resumen de los métodos que se proveen para
este propósito se muestra en la tabla 4.8.
Nombre del Método | Descripción |
---|---|
setTemplate() |
Colocar el nombre de la plantilla de vista. |
getTemplate() |
Regresa el nombre de la plantilla de vista. |
Para colocar el nombre de la plantilla usamos el método setTemplate()
. El método
getTemplate()
regresa el nombre de la plantilla de vista que está colocado
actualmente para el modelo de la vista.
El siguiente código de ejemplo muestra como podemos llamar al métodhttp://bicentenariobu.com/o setTemplate()
desde el método indexAction()
de la clase IndexController
para forzar a ZF3
a usar el archivo de template de vista about.phtml para imprimir la página
Home en lugar del archivo index.phtml:
// Index action renders the Home page of your site.
public function indexAction()
{
// Use a different view template for rendering the page.
$viewModel = new ViewModel();
$viewModel->setTemplate('application/index/about');
return $viewModel;
}
En el código de arriba creamos una nueva instancia de la clase ViewModel
(línea 5).
Luego llamamos al método setTemplate()
del objeto del modelo de vista (línea 6)
y pasamos el nombre de la plantilla de vista como argumento. El nombre de la plantilla
de vista es la ruta relativa al archivo about.phtml
, sin la extensión
del archivo.
Finalmente regresamos el objeto del modelo de vista (el objeto de la clase ViewModel
)
desde el método de acción (línea 7).
Sin embargo, llamar al método
setTemplate()
en cada método de acción es opcional. Si no lo hacemos ZF3 determinará el nombre de la plantilla de vista automáticamente mediante la concatenación del nombre del módulo actual, el nombre del controlador y el nombre del método de acción.