Zend Framework加载视图而不重新加载布局模板

时间:2012-02-07 15:26:08

标签: php javascript json model-view-controller zend-framework

我需要加载配置文件布局,然后将所有配置文件视图加载到该布局中,而无需重新加载布局,以便我可以在客户端浏览器中缓存大型json对象,以允许数据可用在后续视图中,无需为配置文件控制器中的每个视图执行新的HTTP请求。

是否可以加载布局模板,然后通过禁用布局模板将视图加载到布局模板中,以便布局模板永远不会重新加载,只有视图在内?

另一种选择是在布局中放置一个iframe,然后通过禁用它们的布局将视图加载到iframe中,以便只渲染视图。

只需要知道这是否可能以及最佳选择是什么。

提前致谢:)

1 个答案:

答案 0 :(得分:1)

在您不想要布局的视图中尝试:

$this->_helper->layout->disableLayout();

这样可以防止显示布局。

如果由于某种原因,您希望来自同一个控制器的同一个操作多次调用,但是加载一次布局(必须是更好的方式来组织自己),但您总是可以尝试:

public function indexAction()
{
    static $firstTime = true;
    if($firstTime){
        $firstTime = false;
    } else {
        $this->_helper->layout->disableLayout(); //disable layout
    }
}

我会试着给出一个更好的例子: 假设你有一个控制器foo有3个视图:索引,联系人,新闻。

class Foo_Controller extends Zend_Controller
{
     //...

     public function indexAction()
     {
        //normal view layout loads
     }
     public function contactAction()
     {
        //normal view layout loads
     }
     public function newsAction()
     {
        //no layout for this
        $this->_helper->layout->disableLayout(); //disable layout
     }
}

所以需要布局的视图有一个。那些不做的。除非你说布局但是真的想到别的东西然后Zend_View_Helpers_Layout你将发布一些代码来帮助我们帮助你!