2010-09-02 79 views
1

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

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

回答

1

正如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> 

这样一来,我可以简单地从我的布局调用这个帮手

3

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

您可以创建相同的占位符执行,或使用

  • 包括( 'myhtml.phtml');
  • $this->render('script.phtml');
  • 谐音
  • partialLoops
  • 占位符
  • 视图助手

这取决于你需要什么。

行动堆栈是邪恶的,你可能已经听说过。