我将 Zend_Layout 用于 Zend Framework 应用程序的布局。很简单,但是在布局中我还有一些操作需要做。目前,代码包含在 PHP 括号之间,但我觉得这并不是最干净的方法。
我看到人们使用插件,但我认为这不是我想要的方式。显然,我可以提取“复杂”部分,以一种不错的动作/控制器方式进行操作,并在布局中使用占位符。这是要走的路吗?你有这样的例子吗(例如导航菜单在它自己的操作中被委托)?
我将 Zend_Layout 用于 Zend Framework 应用程序的布局。很简单,但是在布局中我还有一些操作需要做。目前,代码包含在 PHP 括号之间,但我觉得这并不是最干净的方法。
我看到人们使用插件,但我认为这不是我想要的方式。显然,我可以提取“复杂”部分,以一种不错的动作/控制器方式进行操作,并在布局中使用占位符。这是要走的路吗?你有这样的例子吗(例如导航菜单在它自己的操作中被委托)?
navigation()
是占位符视图助手的具体实现。
您可以创建相同的占位符实现,或使用
$this->render('script.phtml');
这取决于你需要什么。
正如您可能已经听说过的那样,动作堆栈是邪恶的。
正如 Takeshin 所说,navigation() 占位符可能是要走的路。但是,我不想针对这种特殊情况进行 Zend_Navigation 的设置,所以我使用了自定义视图助手。
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>
...