Zend如何鏈接$ this-> layout() - > content with scripts/index/index.phtml?Zend Framework中頁面的基本流程PHP
我想我沒有理解頁面應該如何粘在一起的基本知識。我已經看到了zend網站的快速入門,但它太簡單了。
Zend如何鏈接$ this-> layout() - > content with scripts/index/index.phtml?Zend Framework中頁面的基本流程PHP
我想我沒有理解頁面應該如何粘在一起的基本知識。我已經看到了zend網站的快速入門,但它太簡單了。
將視圖中呈現的內容(PHTML文件)保存到內容變量中。這可以在佈局模板(另一個phtml文件 - 最好是layout.phtml)中得到迴應。這就是'最終產品':)(或者你想更詳細地說明你的問題)。
正如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,並且你希望能夠修改你的頁腳中的文本。
<div id="footer">
<?php echo $this->layout()->myFooterText; ?>
</div>
,你可以設置此頁腳中的默認值例如:你可以通過定義layout.phtml其中將包含在頁腳下面這樣做你的Bootstrap.php。但是,如果您想要,您可以按照以下方式在您的操作中修改此文本;
$this->view->placeholder('Zend_Layout')->myFooterText = 'Some text only for this action';
這就是我想補充的。當然可以考慮其他scenerios,因爲$this->view->placeholder('Zend_Layout')
是Zend_View_Helper_Placeholder_Container
的一個實例,因此您可以使用Zend_Layout佔位符做其他事情。編號: 關鍵'內容'是一個默認名稱。您可以使用其他的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;
改變它的東西。
佈局不過是一個控制器插件,它在完成所有分派後創建自己的視圖,以便它可以接受最終響應對象並將其視圖的內容屬性設置爲響應主體。
因此,基本上在你的情況下index.phtml的緩衝區,首先存儲在響應對象,然後佈局採取這個值,並改變它自己的視圖緩衝區。
`content`是默認響應段的名稱,所有這些都可用於佈局視圖助手。您也可以從響應對象本身獲取它們。不幸的是,響應部分是ZF – Phil 2011-02-19 03:15:21