2012-02-07 88 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

相關問題