我正在使用Zend_Layout作爲我的Zend Framework應用程序的佈局。這非常簡單,但我仍然需要在佈局中執行一些操作。目前,代碼包含在PHP括號中,但我覺得這不是最乾淨的方法。將Zend Framework中佈局所需的代碼放在哪裏?
我看到有人使用插件,但我不認爲這是我想要的方式。顯然,我可以提取「複雜」的部分,以一個很好的動作/控制器的方式進行操作,並在佈局中使用佔位符。這是要走的路嗎?你有這樣的例子嗎(例如導航菜單委託在自己的行動)?
我正在使用Zend_Layout作爲我的Zend Framework應用程序的佈局。這非常簡單,但我仍然需要在佈局中執行一些操作。目前,代碼包含在PHP括號中,但我覺得這不是最乾淨的方法。將Zend Framework中佈局所需的代碼放在哪裏?
我看到有人使用插件,但我不認爲這是我想要的方式。顯然,我可以提取「複雜」的部分,以一個很好的動作/控制器的方式進行操作,並在佈局中使用佔位符。這是要走的路嗎?你有這樣的例子嗎(例如導航菜單委託在自己的行動)?
正如takehin所說,導航()佔位符可能是要走的路。但是,我不想爲這個特殊情況設置Zend_Navigation,所以我使用了custom view helper。
application/views/helpers/Menu.php
:
<?php
class Zend_View_Helper_Menu extends Zend_View_Helper_Abstract {
public function menu() {
// my code ...
$this->view->menu = $menu;
return $this->view->render('helpers/menu.phtml');
}
}
application/views/scripts/helpers/menu.phtml
:
...
<div id="menu">
<?php echo $this->menu(); ?>
</div>
...
:
<ul>
<?php foreach ($this->menu as $item) { // print menu } ?>
</ul>
這樣一來,我可以簡單地從我的佈局調用這個幫手
navigation()
是佔位符視圖助手的具體實現。
您可以創建相同的佔位符執行,或使用
$this->render('script.phtml');
這取決於你需要什麼。
行動堆棧是邪惡的,你可能已經聽說過。