我使用Zend_Layout作为Zend Framework应用程序的布局。这很简单,但我仍然需要在布局中进行一些操作。目前,代码包含在PHP括号中,但我觉得这不是最干净的方法。
我看到人们使用插件,但我认为这不是我想要的方式。显然,我可以提取“复杂”部分,以一种很好的动作/控制器方式进行,并在布局中使用占位符。这是要走的路吗?你有这样的事情的例子(例如在自己的行动中委托的导航菜单)?
答案 0 :(得分:3)
navigation()
是占位符视图助手的具体实现。
您可以创建相同的占位符实现,或使用
$this->render('script.phtml');
这取决于你需要什么。
行动堆栈是邪恶的,正如您可能已经听说过的那样。
答案 1 :(得分:1)
正如takehin所说,navigation()占位符可能是要走的路。但是,我不想为这个特殊情况设置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
:
<ul>
<?php foreach ($this->menu as $item) { // print menu } ?>
</ul>
这样,我可以简单地从我的布局中调用这个帮助器:
...
<div id="menu">
<?php echo $this->menu(); ?>
</div>
...