動態改變佈景(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');
}

如果themedGET 參數設置了,那佈景的資料夾就會從原本的資料夾改成themes/basic

現在我們在themes/basic/site/index.php裡面,加入自己的佈景樣板:

Hello, I'm a custom theme!

好了,現在我們可以看看在有或沒有 themedGET 參數的狀況下,看首頁會有什麼樣的改變。

results matching ""

    No results matching ""