yii2配置詞典 / 模塊(module)配置一覽

你能否知道?咱們新建一個module後在web.php能夠對其進行近20項配置?跟我看來~php

不知道module?看下面代碼web

// web.php
......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
    ],
],
......複製代碼

class

這是一個必填項,在yii2中不少地方都是這樣的格式,咱們想生成一個partner的模塊對象,首先要知道是哪一個類的對象,class就是這個做用。數組

經過這個配置咱們創建了app\modules\partner\Module的對象。微信

再好比在db.php中的class也是這個做用,在BaseYii.php的createObject方法中你能夠看到具體實現。yii2

layout

佈局參數,選填。app

當你不填寫時候會使用yii2應用的佈局文件,你能夠制定一個,好比yii

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'layout' => 'main'
    ],
],
......複製代碼

yii2會去尋找模塊視圖中的layouts/main.php文件。佈局

重點:layout值是一個路徑,不是一個名稱,看下面的解釋。this

  • /a/main 尋找@app/views/layouts/a/main.php
  • a/main 尋找 @app/modules/partner/views/layouts/a/main.php

明白了吧。另外layout能夠爲false,表明禁用佈局。spa

params

咱們能夠爲模塊設置一些參數,數組形式。記住這個參數屬於整個模塊,你能夠在Module類中使用$this->params得到它們。

固然你在模塊的控制器中也能夠經過$this->module->params得到。

好比下面代碼

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'params' => ['dev'=>'abei2017'],
    ],
],
......複製代碼

填寫這個模塊的開發者,總之是屬於這個模塊的。

id

在邏輯結構上表明一個module,通常不用修改,它和咱們模塊的目錄名不必定要相等,好比下面代碼也沒問題

......
'modules' => [
    'abc' => [
        'class' => 'app\modules\partner\Module',
        'id'=>'partnerdd'
    ],
],
......複製代碼

咱們經過r=abc/default/index 仍然能夠進行訪問,此刻module的id=partnerdd

basePath

通常來講不用修改,它表明一個模塊的物理路徑,記住要和class一致,不然basePath不會起做用,看下面代碼

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'basePath' => "@app/a"
    ],
],
......複製代碼

上面代碼中,yii2還回去找modules文件夾的partner文件夾,不會過問@app/a,因此應該以下

......
'modules' => [
    'partner' => [
        'class' => 'app\a\Module',
        'basePath' => "@app/a"
    ],
],
......複製代碼

簡單的說,要psr規範。通常來講不用修改,除非你不想將模塊放到modules文件夾內的時候能夠用。

version

模塊也須要版本,你若是不配置則默認爲1.0。

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'version' => "2.0"
    ],
],
......複製代碼

咱們在模塊中能夠經過$this->version獲取它。

注意:若是你要顯示2.0、3.0請用字符串形式,不然會顯示二、3。

layoutPath

我想用一句話來講明這個事情,layoutPath + layout = "modules/partner/views/layouts/main.php"

layoutPath表明佈局文件所在的目錄,這個配置項的末尾沒有斜槓。不推薦自定義,若是你非要記住它支持別名。

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'layoutPath' => "@app/a"
    ],
],
......複製代碼

有一點要注意,layoutPath必須在設置了layout的狀況下才會生效。

viewPath

到這裏後我想你本身已經知道viewPath的含義了,視圖文件的路徑,支持別名。

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'viewPath' => "@app/a"
    ],
],
......複製代碼

當訪問模塊某個action的時候,yii2會去@app/a目錄下找視圖文件

defaultRoute

默認路由,當咱們的路由只是指定模塊名時yii2會去尋找defaultRoute的配置,默認是default,因此當你訪問index.php?r=partner,則yii2會尋址partner/default/index

若是你要改變它

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'defaultRoute' => "default/say"
    ],
],
......複製代碼

按照上面配置,當訪問index.php?r=partner時,會尋址partner/default/say

controllerNamespace

通常不須要改變,除非你想改變存放控制器文件的目錄名,看下面代碼

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'controllerNamespace'=>'app\modules\partner\cs'
    ],
],
......複製代碼

而後你的控制器的命名空間須要是

namespace app\modules\partner\cs;複製代碼

同時控制器的存儲文件夾也應該是cs名稱

這樣才能正常運行,通常不須要本身修改,可是你能夠修改。

controllerMap

這個功能適合於接口的統一,好比partner如今想使用外部的控制器,能夠以下設置

......
'modules' => [
    'partner' => [
        'class' => 'app\modules\partner\Module',
        'controllerMap' => [
            'aaa'=>'app\controllers\SiteController'
        ]
    ],
],
......複製代碼

這樣設置後,當咱們訪問index.php?r=partner/aaa/index 其實訪問的是SiteController控制器下的actionIndex

總結

到此爲止module設置的經常使用配置就都已經給你們說完了,感謝你閱讀,如有疑問請留言本帖。

原文來自 北哥兄弟連(nai8.me) ,版權全部 轉載請聯繫我微信 abei-pg。

相關文章
相關標籤/搜索