我正在使用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');
这取决于你需要什么。
行动堆栈是邪恶的,你可能已经听说过。