在Zend Framework中放置布局所需的代码的位置?

时间:2010-09-02 09:59:57

标签: php zend-framework layout code-behind zend-layout

我使用Zend_Layout作为Zend Framework应用程序的布局。这很简单,但我仍然需要在布局中进行一些操作。目前,代码包含在PHP括号中,但我觉得这不是最干净的方法。

我看到人们使用插件,但我认为这不是我想要的方式。显然,我可以提取“复杂”部分,以一种很好的动作/控制器方式进行,并在布局中使用占位符。这是要走的路吗?你有这样的事情的例子(例如在自己的行动中委托的导航菜单)?

2 个答案:

答案 0 :(得分:3)

navigation()是占位符视图助手的具体实现。

您可以创建相同的占位符实现,或使用

  • 包括( 'myhtml.phtml');
  • $this->render('script.phtml');
  • 泛音
  • partialLoops
  • 占位符
  • 查看助手

这取决于你需要什么。

行动堆栈是邪恶的,正如您可能已经听说过的那样。

答案 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>
...