2012-02-07 79 views
-1

我需要加载配置文件布局,然后将所有配置文件视图加载到该布局中,而无需重新加载布局,这样我就可以缓存一个大的json对象客户端浏览器,以允许在后续视图中使用数据,而无需为我的配置文件控制器中的每个视图执行新的HTTP请求。Zend Framework在不重新加载布局模板的情况下加载视图

是否可以加载布局模板,然后加载视图到其中,通过禁用它们的布局模板,以便布局模板不会重新加载,只有视图内?

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

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

感谢提前:)

+0

难道你不能只用另一个动作? – Vyktor 2012-02-07 15:45:20

+0

那么你想通过AJAX加载HTML并将其放入你的布局?或者你想要什么?这很不清楚。 – bububaba 2012-02-07 15:48:30

+0

好,让我帮忙。我需要将一个大的JSON对象缓存在一个页面上,该页面上有一个iframe。所有其他页面都需要访问这些数据,所以我需要将它们加载到iframe中,并且一旦登录就不会刷新主页面。 – 2012-03-13 03:07:18

回答

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你将不会发布一些代码来帮助我们帮助你!

+0

但是,我可以将控制器的索引视图加载到具有iframe的布局中,然后加载该控制器中的所有其他视图放入iframe中?我需要它到布局页面只为我的配置文件控制器加载一次的位置,以便我可以缓存一次配置文件数据并在所有配置文件视图中使用它。 – 2012-02-07 15:33:15

+0

我不确定你究竟在问什么。 – Iznogood 2012-02-07 15:36:34

+0

基本上我需要缓存配置文件控制器布局页面中的json对象,并且每次从配置文件控制器加载视图时都不会重新加载它,这样数据就会缓存在客户端浏览器中,并在查看其他视图时可用控制器。合理? – 2012-02-07 16:44:27

相关问题