99re热这里只有精品视频,7777色鬼xxxx欧美色妇,国产成人精品一区二三区在线观看,内射爽无广熟女亚洲,精品人妻av一区二区三区

主題(Theming)

2018-02-24 15:40 更新

主題

主題是一種將當前的一套視圖?views?替換為另一套視圖,而無需更改視圖渲染代碼的方法。 你可以使用主題來系統(tǒng)地更改應用的外觀和體驗。

要使用主題,你得配置?view?應用組件的 yii\base\View::theme 屬性。 這個屬性配置了一個 yii\base\Theme 對象,這個對象用來控制視圖文件怎樣被替換。 你主要應該指明下面的 yii\base\Theme 屬性:

  • yii\base\Theme::basePath:指定包含主題資源(CSS, JS, images, 等等)的基準目錄。
  • yii\base\Theme::baseUrl:指定主題資源的基準URL。
  • yii\base\Theme::pathMap:指定視圖文件的替換規(guī)則。更多細節(jié)將在下面介紹。

例如,如果你在?SiteController?里面調(diào)用?$this->render('about'),那你將渲染視圖文件?@app/views/site/about.php。 然而,如果你在下面的應用配置中開啟了主題功能,那么@app/themes/basic/site/about.php?文件將會被渲染。

return [
    'components' => [
        'view' => [
            'theme' => [
                'basePath' => '@app/themes/basic',
                'baseUrl' => '@web/themes/basic',
                'pathMap' => [
                    '@app/views' => '@app/themes/basic',
                ],
            ],
        ],
    ],
];

信息:主題支持路徑別名。當我們在做視圖替換的時候, 路徑別名將被轉(zhuǎn)換成實際的文件路徑或者URL。

你可以通過 yii\base\View::theme 屬性訪問 yii\base\Theme 對象。例如,在一個視圖文件里,你可以寫下面的代碼, 因為?$this?指向視圖對象:

$theme = $this->theme;

// returns: $theme->baseUrl . '/img/logo.gif'
$url = $theme->getUrl('img/logo.gif');

// returns: $theme->basePath . '/img/logo.gif'
$file = $theme->getPath('img/logo.gif');

yii\base\Theme::pathMap 屬性控制如何替換視圖文件。它是一個鍵值對數(shù)組,其中, 鍵是原本的視圖路徑,而值是相應的主題視圖路徑。 替換是基于部分匹配的:如果視圖路徑以 yii\base\Theme::pathMap 數(shù)組的 任何一個鍵為起始,那么匹配部分將被相應的值所替換。 使用上面配置的例子,因為?@app/views/site/about.php?中的起始部分與鍵?@app/views?匹配, 它將被替換成@app/themes/basic/site/about.php。

主題化模塊

要主題化模塊,yii\base\Theme::pathMap 可以配置成下面這樣:

'pathMap' => [
    '@app/views' => '@app/themes/basic',
    '@app/modules' => '@app/themes/basic/modules', // <-- !!!
],

它允許你將?@app/modules/blog/views/comment/index.php?主題化成@app/themes/basic/modules/blog/views/comment/index.php。

主題化小部件

要主題化小部件,你可以像下面這樣配置 yii\base\Theme::pathMap:

'pathMap' => [
    '@app/views' => '@app/themes/basic',
    '@app/widgets' => '@app/themes/basic/widgets', // <-- !!!
],

這將允許你將?@app/widgets/currency/views/index.php?主題化成?@app/themes/basic/widgets/currency/index.php。

主題繼承

有的時候,你可能想要定義一個基本的主題,其中包含一個基本的應用外觀和體驗,然后根據(jù)當前的節(jié)日,你可能想要稍微地改變一下外觀和體驗。 這個時候,你就可以使用主題繼承實現(xiàn)這一目標,主題繼承是通過一個單視圖路徑去映射多個目標, 例如,

'pathMap' => [
    '@app/views' => [
        '@app/themes/christmas',
        '@app/themes/basic',
    ],
]

在這種情況下,視圖?@app/views/site/index.php?將被主題化成?@app/themes/christmas/site/index.php?或者@app/themes/basic/site/index.php, 這取決于哪個主題文件存在。假如都存在,那么第一個將被優(yōu)先使用。在現(xiàn)實情況中, 你會將大部分的主題文件放在?@app/themes/basic?里,而一些自定義的放在?@app/themes/christmas里。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號