Php Zend Framework-跨控制器重用视图标题信息
在Zend Framework中,我有一个常见的用例,在这个用例中,我需要在视图的顶部跨特定控制器传播相同的信息 例如,如果我有一个“Book”控制器,我希望在页面顶部显示摘要图书信息,并在图书下方有一个选项卡式界面来显示评论、详细信息等。每个选项卡都是books控制器中的一个操作。在控制器的视图中传播摘要信息的推荐方式是什么,以便:Php Zend Framework-跨控制器重用视图标题信息,php,zend-framework,zend-view,placeholder,Php,Zend Framework,Zend View,Placeholder,在Zend Framework中,我有一个常见的用例,在这个用例中,我需要在视图的顶部跨特定控制器传播相同的信息 例如,如果我有一个“Book”控制器,我希望在页面顶部显示摘要图书信息,并在图书下方有一个选项卡式界面来显示评论、详细信息等。每个选项卡都是books控制器中的一个操作。在控制器的视图中传播摘要信息的推荐方式是什么,以便: 我不会在每次操作中不断获取摘要书籍信息 我没有在我的观点中重复信息 我曾想过在视图中使用Zend视图帮助器、占位符或操作帮助器($this->action…) 有
有什么建议吗?听起来您想在控制器上的
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;
}
}
如果一个动作只呈现图书信息,那么你可能可以使用空的动作方法,让视图脚本完成它们的工作
这样做的唯一缺点是,它可以获得关于每个动作的书籍数据。因此,如果有一些操作不需要图书数据,那么您将消耗获取图书数据的开销。听起来您希望在控制器上的
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;
}
}
如果一个动作只呈现图书信息,那么你可能可以使用空的动作方法,让视图脚本完成它们的工作
这样做的唯一缺点是,它可以获得关于每个动作的书籍数据。因此,如果有一些操作不需要书本数据,那么您将消耗获取书本数据的开销。我将动态加载选项卡的内容(应该很容易通过操作助手与当前解决方案集成。只需将操作的响应加载到选项卡容器中即可) 如果您决定坚持使用非ajax解决方案,那么代码将被迫重复,因为您需要在多个页面上显示相同的信息。视图帮助程序应该更适合您的需要,因为视图帮助程序执行某种逻辑(或逻辑代理),而您只需要它来表示和标记
如果您使用某种智能缓存方法(每个部分/选项卡可能有一个缓存条目),那么获取的信息在您的系统上应该不会太难。我会动态加载选项卡的内容(应易于通过操作助手与当前解决方案集成。只需将操作的响应加载到选项卡容器中即可 如果您决定坚持使用非ajax解决方案,那么代码将被迫重复,因为您需要在多个页面上显示相同的信息。视图帮助程序应该更适合您的需要,因为视图帮助程序执行某种逻辑(或逻辑代理),而您只需要它来表示和标记 获取的信息在您的系统上不应该太难,假设您使用的是某种智能缓存方法(每个部分/选项卡可能有一个缓存条目)