在Zend Framework中,我有一个常见的用例,我需要在特定控制器的视图顶部传播相同的信息。
例如,如果我有一个“Book”控制器,我想在页面顶部显示摘要书信息,并在书的下方有一个标签界面,以显示评论,详细信息等。每个标签是书籍控制器中的一个动作。在控制器中的视图之间传播摘要信息的建议方法是:
我在视图中使用了Zend View Helper,占位符或动作助手($ this-> action ...)。
有什么建议吗?
答案 0 :(得分: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;
}
}
如果一个动作只呈现书籍信息,那么你可以放弃空行动方法,让视图脚本做他们的事情。
唯一的缺点是它会在每个操作中获取图书数据。因此,如果有一些动作不需要书籍数据,那么你就会花掉取得它的开销。
答案 1 :(得分:0)
我会动态加载标签的内容(应该很容易通过动作助手AjaxContent
与您当前的解决方案集成。只需将动作的响应加载到标签容器中。
如果您决定坚持使用非ajax解决方案,则代码必须重复,因为您需要在多个页面上使用相同的部分信息。 partial
应该更适合您的需求,因为视图助手执行某种逻辑(或逻辑代理),而您只需要它用于演示和放大。标记。
假设您正在使用某种智能缓存方法(每个部分/选项卡可能有一个缓存条目),那么所提取的信息在您的系统上应该不会那么难。