動態改變佈景(Switching themes dynamically)
View themes are useful for overriding extension views and making special view versions。Yii 官方教學 已經指導我們怎麼在靜態網頁裡面設置佈景。這邊我們指導如何動態的改變佈景。
1. 準備
我們安裝 基本 Yii 應用套件。確定安裝成功並能正常運作。
2. 目標
這裡我們簡單的使用 GET 參數來改變佈景,像是 themed=1
。
3. 作法
只要在 render 樣板之前,我們可以在任何時間點改變佈景。
為求清楚,我們這裡在controllers/SiteController.php
的action裡面做修改:
public function actionIndex()
{
if (Yii::$app->request->get('themed')) {
Yii::$app->getView()->theme = new Theme([
'basePath' => '@app/themes/basic',
'baseUrl' => '@web/themes/basic',
'pathMap' => [
'@app/views' => '@app/themes/basic',
],
]);
}
return $this->render('index');
}
如果themed
GET 參數設置了,那佈景的資料夾就會從原本的資料夾改成themes/basic
。
現在我們在themes/basic/site/index.php
裡面,加入自己的佈景樣板:
Hello, I'm a custom theme!
好了,現在我們可以看看在有或沒有 themed
GET 參數的狀況下,看首頁會有什麼樣的改變。