Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/255.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Zend Framework-跨控制器重用视图标题信息_Php_Zend Framework_Zend View_Placeholder - Fatal编程技术网

Php Zend Framework-跨控制器重用视图标题信息

Php Zend Framework-跨控制器重用视图标题信息,php,zend-framework,zend-view,placeholder,Php,Zend Framework,Zend View,Placeholder,在Zend Framework中,我有一个常见的用例,在这个用例中,我需要在视图的顶部跨特定控制器传播相同的信息 例如,如果我有一个“Book”控制器,我希望在页面顶部显示摘要图书信息,并在图书下方有一个选项卡式界面来显示评论、详细信息等。每个选项卡都是books控制器中的一个操作。在控制器的视图中传播摘要信息的推荐方式是什么,以便: 我不会在每次操作中不断获取摘要书籍信息 我没有在我的观点中重复信息 我曾想过在视图中使用Zend视图帮助器、占位符或操作帮助器($this->action…) 有

在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解决方案,那么代码将被迫重复,因为您需要在多个页面上显示相同的信息。视图帮助程序应该更适合您的需要,因为视图帮助程序执行某种逻辑(或逻辑代理),而您只需要它来表示和标记

    获取的信息在您的系统上不应该太难,假设您使用的是某种智能缓存方法(每个部分/选项卡可能有一个缓存条目)