Zend如何使用scripts / index / index.phtml链接$ this-> layout() - >内容?
我认为我无法理解页面如何粘在一起的基础知识。我看过zend网站上的快速入门,但它过于简单了。
答案 0 :(得分:4)
因此,TomášFejfar解释了$this->layout()->content
的工作方式。然而有趣的是,“内容”不仅仅是布局中的一个变量。事实上,'content'是View占位符中的一个键,叫做'Zend_Layout'。因此,以下代码段相当于layout.phtml中的echo $this->layout()->content
:
$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;
这非常有用。我的意思是你可以在layout.phtml中定义一些地方,这些地方将显示来自'Zend_Layout'占位符的自定义键的值。例如,假设您想要一个layout.phtml,并且希望能够修改页脚中的文本。你可以通过定义layout.phtml来实现这一点,它将在页脚中包含以下内容:
<div id="footer">
<?php echo $this->layout()->myFooterText; ?>
</div>
您可以在此处设置此页脚的默认值。你的Bootstrap.php。但是,如果您希望可以在操作中修改此文本,如下所示;
$this->view->placeholder('Zend_Layout')->myFooterText = 'Some text only for this action';
这就是我想要添加的内容。当然,人们可以想到其他场景,因为$this->view->placeholder('Zend_Layout')
是Zend_View_Helper_Placeholder_Container
的一个实例,所以你可以用Zend_Layout占位符做其他事情。
编辑: 键'content'是默认名称。您可以使用Zend_Layout的setContentKey方法将其更改为其他内容,例如:
protected function _initSetNewLayoutContentKey() {
$layout = $this->bootstrap('layout')->getResource('layout');
// instead of 'content' use 'viewoutput'
$layout->setContentKey('viewoutput');
}
通过此更改,您可以在layout.phtml中使用echo $this->layout()->viewoutput;
代替echo $this->layout()->content;
。
答案 1 :(得分:1)
您视图中呈现的内容(PHTML文件)将保存到内容变量中。这可以在布局模板中回显(另一个phtml文件 - 最好是layout.phtml)。这就是'最终产品':)(或者你想要更多地指明你的问题)。
答案 2 :(得分:0)
布局只不过是一个控制器插件,它在完成所有调度后创建自己的视图,因此它可以获取最终响应对象并将其视图的内容属性设置为响应主体。
因此,基本上在你的index.phtml的case缓冲区中,首先存储在响应对象中,然后布局获取此值并将其更改为自己的视图缓冲区。