2011-06-05 41 views
1

我想爲我的着陸頁和我的web應用程序中的所有其他頁面使用不同的標題。做這個的最好方式是什麼?Yii框架自定義標題

據我瞭解,頁眉和頁腳從view/layouts/main.php加載,在我的情況下,因爲我使用的是主題,所以從主題/新/視圖/佈局/主.PHP

現在我要爲除登陸頁面我的所有頁面的頁眉部分,使用標題部分作爲「main.php」,但是着陸頁定義應該有一個不同的標題。我應該怎麼做?我應該使用渲染部分嗎?既然我是Yii新手,我該怎麼做?

可我也用其他的佈局文件,column1.php或column2.php之一?如何?

我不是在尋找廣泛的手握在這裏。至於人們是如何實現類似的功能的,我只是需要一個頭腦。

+0

解決了這個自己被 1.創建一個不同的佈局(我用的着陸頁上)延伸 - 叫它front.php 2.在控制器,我想爲不同的佈局的頁面(首頁,所以在SiteController的actionIndex)。我添加了這個$​​ this-> layout ='// layouts/front'; – Abhinav 2011-06-05 05:32:02

回答

1

這部分取決於標題是如何的不同將是在你的方法上。如果你想讓它們完全分離,你可以使用額外的佈局文件或者與main.php結合使用或者替代它。

您設定在控制器類開始佈局文件的東西,如:

public $layout='//layouts/column2'; 

這將設置默認佈局的控制器。您可以更改動作函數中的值或評估「beforeAction」函數中的條件。

默認生成的管理頁面(帶有「gii」或命令行)利用main.php中的column1.php和column2.php佈局,並提供一個體面的示例來了解它們的工作原理。只需將內容從您想要自定義的main.php中移出並放入單獨的佈局文件即可。如果您仍然在分享內容,則可以將共享內容保留在main.php中。

如果只是改變一些屬性,您可以使用$this->getAction()->getId()來獲取操作名稱並使用它來更改在佈局中加載的內容,例如某個css或js文件。您想在控制器中執行任何複雜的邏輯。

對於像導航欄或類似的東西,您也可以使用includerenderPartial根據您在控制器中設置的環境變量。

0

我通常創建一個像HeaderWidget一個小部件與幾個視圖文件,包括在主要佈局。在控制器或動作中,定義標題的必要視圖文件並將它們傳遞給小部件。

在基礎控制器中,您可以定義屬性public $ headerName ='defaultHeaderView' 設置值取決於某些條件。

五言,你需要創建BController擴展CController和所有其他控制器從BController