Zend_Layout tiene una variedad de opciones de configuración. Estas
pueden establecerse llamando a los accesores apropiados, pasando un array u objeto
Zend_Config al constructor o a
startMvc(), pasando un array de opciones a
setOptions(), o pasando un objeto Zend_Config
a setConfig().
layout: el layout a usar. Usa el inflector actual para resolver el nombre proporcionado hacia el script de vista de layout apropiado. Por defecto, este valor es 'layout' y se resuelve a 'layout.phtml'. Los accesores son
setLayout()ygetLayout().layoutPath: la ruta base a los scripts de vista de layout. Los accesores son
setLayoutPath()ygetLayoutPath().contentKey: la variable de layout usada para el contenido por defecto (cuando se usa con el MVC). El valor por defecto es 'content'. Los accesores son
setContentKey()ygetContentKey().mvcSuccessfulActionOnly: cuando se usa el MVC, si una acción lanza una excepción y este indicador es
TRUE, el layout no se renderizará (esto es para evitar el doble renderizado del layout cuando se usa el plugin ErrorHandler). Por defecto, el indicador esTRUE. Los accesores sonsetMvcSuccessfulActionOnly()ygetMvcSuccessfulActionOnly().view: el objeto de vista a usar al renderizar. Cuando se usa con el MVC,
Zend_Layoutintentará usar el objeto de vista registrado con el ViewRenderer si no se le ha pasado explícitamente ningún objeto de vista. Los accesores sonsetView()ygetView().helperClass: la clase de helper de acción a usar cuando se usa
Zend_Layoutcon los componentes MVC. Por defecto, esta esZend_Layout_Controller_Action_Helper_Layout. Los accesores sonsetHelperClass()ygetHelperClass().pluginClass: la clase de plugin del controlador frontal a usar cuando se usa
Zend_Layoutcon los componentes MVC. Por defecto, esta esZend_Layout_Controller_Plugin_Layout. Los accesores sonsetPluginClass()ygetPluginClass().inflector: el inflector a usar al resolver los nombres de layout a rutas de scripts de vista de layout; vea la documentación del inflector de
Zend_Layoutpara más detalles. Los accesores sonsetInflector()ygetInflector().
![]() |
helperClass y pluginClass deben pasarse a startMvc() |
|---|---|
Para que las opciones helperClass y
pluginClass tengan efecto, deben
pasarse como opciones a |
Los siguientes ejemplos asumen el siguiente array
$options y el objeto $config:
$options = array(
'layout' => 'foo',
'layoutPath' => '/path/to/layouts',
'contentKey' => 'CONTENT', // ignored when MVC not used
);
/**
[layout]
layout = "foo"
layoutPath = "/path/to/layouts"
contentKey = "CONTENT"
*/
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
Ejemplo 40.1. Pasar opciones al constructor o a startMvc()
Tanto el constructor como el método estático startMvc()
pueden aceptar un array de opciones o un objeto
Zend_Config con opciones para
configurar la instancia de Zend_Layout.
Primero, veamos cómo pasar un array:
// Using constructor: $layout = new Zend_Layout($options); // Using startMvc(): $layout = Zend_Layout::startMvc($options);
Y ahora usando un objeto de configuración:
$config = new Zend_Config_Ini('/path/to/layout.ini', 'layout');
// Using constructor:
$layout = new Zend_Layout($config);
// Using startMvc():
$layout = Zend_Layout::startMvc($config);
Básicamente, esta es la forma más sencilla de personalizar su
instancia de Zend_Layout.
Ejemplo 40.2. Usar setOption() y setConfig()
A veces necesita configurar el objeto Zend_Layout
después de que ya ha sido instanciado;
setOptions() y setConfig() le dan
una forma rápida y sencilla de hacerlo:
// Using an array of options: $layout->setOptions($options); // Using a Zend_Config object: $layout->setConfig($options);
Tenga en cuenta, sin embargo, que ciertas opciones, como
pluginClass y helperClass, no tendrán
ningún efecto cuando se pasen usando este método; deben pasarse
al constructor o al método startMvc().
Ejemplo 40.3. Usar accesores
Finalmente, también puede configurar su instancia de Zend_Layout
mediante accesores. Todos los accesores implementan una interfaz
fluida, lo que significa que sus llamadas pueden encadenarse:
$layout->setLayout('foo')
->setLayoutPath('/path/to/layouts')
->setContentKey('CONTENT');
![[Note]](images/note.png)