2009-10-23 10 views
60

Estoy seguro de que es un simple trazador de líneas, pero parece que no puedo encontrarlo.¿Cómo cambiar los archivos de diseño en Zend Framework?

¿Cómo puedo usar un archivo de diseño diferente para una acción en particular?

Actualización: Esto funcionó para mí, gracias!

// Within controller 
$this->_helper->_layout->setLayout('other-layout') //other-layout.phtml 

//Within view script 
<?php $this->layout()->setLayout('other-layout'); ?> 
+0

Puede alguien fijar '_helper_layout' debería ser' _helper-> layout' – MitMaro

+0

conseguido. ¡Gracias! – Andrew

Respuesta

62

Desde el interior de un controlador:

$this->_helper->layout->setLayout('/path/to/your/layout_script'); 

(a través de these docs)

EDIT: Debo mencionar que la ruta es relativa a lo que su directorio de diseño es (por defecto, que es application/layouts/scripts/)

+4

O, si el layoutpath está ajustado correctamente ('$ esquema de trazado> setLayoutPath ('application/layouts/scripts')'), usar '$ this -> _ helper_layout-> setLayout ('alternative_layout')' 'para hacer referencia a la aplicación/layouts/scripts/alternative_layout.phtml'. – chelmertz

+0

Desde el interior de una vista: layout() -> setLayout ('/ ruta/a/su/layout_script')> – Travis

+0

@Travis: No me gustaría que ese tipo de lógica en un script de vista a menos que sólo tiene una realidad? un pequeño número de scripts de vista para que sepa dónde depurar estos ajustes críticos de la aplicación. – chelmertz

13

También puede utilizar esto

// Within controller 
Zend_Layout::getMvcInstance()->setLayout('layout_name'); 

//Within view script 

<?php $this->layout()->setLayout('layout_name'); ?> 

Su diseño debe estar en/layouts/scripts/carpeta, de lo contrario, tiene que especificar la ruta de acceso también. No es necesario escribir .phtml, sólo el nombre de la disposición

Cuestiones relacionadas