2013-08-07 115 views
0

我遇到Yii和主題有一個奇怪的問題。我把它設置在config/main.php中,例如:Yii不是呈現主題

'theme'=>'themeName', 

像往常一樣。但是,當我嘗試呈現一個視圖,它呈現爲是,沒有任何的佈局,彷彿我叫:

$this->renderPartial 

我仔細檢查,我不要求的RenderPartial,主題似乎是等於我所做的所有其他主題。這個問題可能是什麼?

感謝的任何幫助,我要出去在這樣的頭腦的...

+0

您可以擷取屏幕的項目結構,並告訴我知道上面的線是從哪裏來的看法? –

+0

對不起......我發現我在佈局中有一個非常愚蠢的錯誤,就像一個失蹤的「;」或類似的東西和錯誤,在服務器上未啓用... – teone

回答

0

這裏的結構和語法,你應該有檢查

-yiiroot 
-!-!protected 
-!-!-!controllers 
-!-!-!-!TestController.php 
-!-!themes 
-!-!-!themeName (it was the one that you have set on config file) 
-!-!-!-!views 
-!-!-!-!-!layouts 
-!-!-!-!-!-!main.php // It would be default what if public $layout has not been overwriten or the layout file which has been set was not found  
-!-!-!-!-!test 
-!-!-!-!-!-!viewName.php 

在控制器TestController

  • public $layout主要是默認設置或被覆蓋

  • actionIndex設置$this->render('viewName');

如果您在控制器渲染你的頁面直接方法renderPartial(),你不會得到的佈局模板肯定

渲染()通常是用於呈現與用戶在應用程序中看到的「頁面」對應的視圖。它首先呈現您指定的視圖 ,然後呈現當前的 控制器操作(如果適用)的佈局,並將第一個 呈現的結果放入佈局中。然後它執行輸出處理(在 這次意味着自動插入任何必要的標記 並更新動態內容)並最終輸出結果。

renderPartial()通常用於呈現頁面的「塊」。 render()與 的主要區別在於,此方法不會將渲染結果的 放置在佈局中。默認情況下,它也不會執行 輸出處理,但您可以使用 $ processOutput參數覆蓋此行爲。

RenderFile模塊()是確實 渲染的繁重的工作低電平方法:它提取數據變量在當前範圍和 然後運行視圖代碼。其他兩種方法在內部稱爲 ,但您幾乎不需要自己調用它。如果你 做,請記住,你需要通過一個文件路徑(而不是一個視圖 路徑)。

參考:Yii difference between rendering functions