2010-07-15 136 views
2

重用视图标题信息在Zend框架,我有,我需要在传播跨特定控制器的视图的顶部部分中的相同的信息的公共使用的情况。例如,如果我有一个“书籍”控制器,我想在页面顶部显示摘要书籍信息,并在书籍下方有一个标签界面以显示评论,详细信息等。每个标签页是书籍控制器中的一项操作。建议如何在控制器中的视图之间传播摘要信息的方式如下:Zend框架 - 跨控制器

  1. 我不会不断地在每个操作中获取摘要书籍信息。
  2. 我不是在我的观点重复信息。

我虽然在视图中使用了Zend View Helper,占位符或动作助手($ this-> action ...)。

有什么建议吗?

回答

0

听起来像是你想在init()方法来获取控制器上的图书信息:

class MyController extends Zend_Controller_Action 
{ 
    protected $_book; 

    public function init() 
    { 
     // get the book data/model, etc 
     $book = $this->_getBook(); 

     // if necessary, store the book for use in the actions 
     $this->_book = $book; 

     // store the book in the view 
     $this->view->book = $book; 
    } 
} 

如果动作只呈现图书的信息,那么你也许可以逃脱空操作方法,让视图脚本做他们的事情。

唯一的缺点是它可以通过动作获取的书本数据。因此,如果有不需要的书数据的一些动作,那么你最好是吃取它的开销。

0

如果您决定坚持使用非我会加载标签内容动态(应该很容易通过动作助手AjaxContent当前解决方案集成。只需加载动作的响应到你的标签的容器中。

-ajax解决方案,该代码被强制重复,因为你需要不止一个页面上的相同资料片。因为视图助手进行某种逻辑(或逻辑代理),而你partial应该是更适合您的需求只需要用于呈现&标记。

获取不应该是硬的信息你的系统,假设你正在使用一些智能缓存方法(可能每个部分/选项卡都有一个缓存项)。