TigerZF
🌐Español

40.3. Opciones de configuración de Zend_Layout

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() y getLayout().

  • layoutPath: la ruta base a los scripts de vista de layout. Los accesores son setLayoutPath() y getLayoutPath().

  • 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() y getContentKey().

  • 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 es TRUE. Los accesores son setMvcSuccessfulActionOnly() y getMvcSuccessfulActionOnly().

  • view: el objeto de vista a usar al renderizar. Cuando se usa con el MVC, Zend_Layout intentará usar el objeto de vista registrado con el ViewRenderer si no se le ha pasado explícitamente ningún objeto de vista. Los accesores son setView() y getView().

  • helperClass: la clase de helper de acción a usar cuando se usa Zend_Layout con los componentes MVC. Por defecto, esta es Zend_Layout_Controller_Action_Helper_Layout. Los accesores son setHelperClass() y getHelperClass().

  • pluginClass: la clase de plugin del controlador frontal a usar cuando se usa Zend_Layout con los componentes MVC. Por defecto, esta es Zend_Layout_Controller_Plugin_Layout. Los accesores son setPluginClass() y getPluginClass().

  • 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_Layout para más detalles. Los accesores son setInflector() y getInflector().

[Note] helperClass y pluginClass deben pasarse a startMvc()

Para que las opciones helperClass y pluginClass tengan efecto, deben pasarse como opciones a startMvc(); si se establecen más tarde, no tienen efecto.

40.3.1. Ejemplos

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');