Así como Tomáš Fejfar explicó que así es como funciona el $this->layout()->content
. Sin embargo, lo interesante es que el "contenido" no es solo una variable en el diseño. De hecho, 'contenido' es una clave en un marcador de posición de vista llamado 'Zend_Layout'. Por esta razón, los siguientes fragmentos son equivalentes a echo $this->layout()->content
en su layout.phtml:
$placeHolder = Zend_View_Helper_Placeholder_Registry::getRegistry()->getContainer('Zend_Layout');
echo $placeHolder['content'];
// or
echo $this->placeholder('Zend_Layout');
// or
echo $this->placeholder('Zend_Layout')->content;
Esto puede ser muy útil. Lo que quiero decir es que puedes definir algunos lugares en tu layout.phtml que mostrarán los valores de tus claves personalizadas del marcador de posición 'Zend_Layout'. Por ejemplo, imagine que le gustaría tener un layout.phtml y desea poder modificar el texto en su pie de página. Usted puede hacer esto mediante la definición de layout.phtml que contendrá lo siguiente en el pie de página:
<div id="footer">
<?php echo $this->layout()->myFooterText; ?>
</div>
usted podría fijar un valor por defecto de este pie de página en, por ejemplo, su Bootstrap.php. Sin embargo, si lo desea, puede modificar este texto en sus acciones de la siguiente manera;
$this->view->placeholder('Zend_Layout')->myFooterText = 'Some text only for this action';
Eso es lo que quería agregar. Por supuesto, uno podría pensar en otros escenarios, porque $this->view->placeholder('Zend_Layout')
es una instancia de Zend_View_Helper_Placeholder_Container
, por lo que podría hacer otras cosas con el marcador de posición Zend_Layout.
EDITAR: Clave 'contenido' es un nombre predeterminado. Puede cambiar a otra cosa utilizando el método de setContentKey Zend_Layout, por ejemplo .:
protected function _initSetNewLayoutContentKey() {
$layout = $this->bootstrap('layout')->getResource('layout');
// instead of 'content' use 'viewoutput'
$layout->setContentKey('viewoutput');
}
Con este cambio, en su layout.phtml que usaría echo $this->layout()->viewoutput;
en lugar de echo $this->layout()->content;
.
'content' es el nombre del segmento de respuesta predeterminado, todos los cuales están disponibles para el asistente de vista de diseño. También puede obtenerlos del objeto de respuesta en sí. Los segmentos de respuesta son, desafortunadamente, una característica poco documentada de ZF – Phil
@Phil Brown. Lo que quiero decir es que 'contenido' es una clave en el marcador de posición Zend_Layout y Zend_Layout lo está usando para almacenar el resultado de las acciones. Puede verificar fácilmente las claves del marcador de posición de la siguiente manera: var_dump ($ this-> placeholder ('Zend_Layout') -> getKeys()); – Marcin