請教一下各位,yii2的模組建立後(比如如下的forum模組),官方的標準是如下目錄結構。
請問可以在該模組下手動建立一個目錄嗎?比如common目錄,如果可以的話調用該目錄裡的類檔案與Yii1.1中的components一樣嗎?
現在想把該模組通用的類放到該目錄,就像YII1.1中的components目錄一樣,多謝了
forum/ Module.php 模組類檔案 controllers/ 包含控制器類檔案 DefaultController.php default 控制器類檔案 models/ 包含模型類檔案 views/ 包含控制器視圖檔案和布局檔案 layouts/ 包含布局檔案 default/ 包含DefaultController控制器視圖檔案 index.php index視圖檔案
回複內容:
請教一下各位,yii2的模組建立後(比如如下的forum模組),官方的標準是如下目錄結構。
請問可以在該模組下手動建立一個目錄嗎?比如common目錄,如果可以的話調用該目錄裡的類檔案與Yii1.1中的components一樣嗎?
現在想把該模組通用的類放到該目錄,就像YII1.1中的components目錄一樣,多謝了
forum/ Module.php 模組類檔案 controllers/ 包含控制器類檔案 DefaultController.php default 控制器類檔案 models/ 包含模型類檔案 views/ 包含控制器視圖檔案和布局檔案 layouts/ 包含布局檔案 default/ 包含DefaultController控制器視圖檔案 index.php index視圖檔案
沒什麼經驗,不過從你列出的預設結構來看直接建立目錄應該是無法自動載入的,需要添加一些設定,類似 namespace => 'Common', path => 'forum/common',具體怎麼做參考一下models或者controllers的配置就行了。
這種相當於加組件類,主要是把自己添加的類路徑和參數, 在config目錄中的main.php進行配置,這樣的就可以自動載入,可以仿照db配置connection時的樣子 :
(主要應該是自訂class的路徑 例如可以是forumcommonutil。對應util類的命名空間可以是namespace forumcommon)
[ 'components' => [ // 使用類名註冊 "cache" 組件 'cache' => 'yii\caching\ApcCache', // 使用配置數組註冊 "db" 組件 'db' => [ 'class' => 'yii\db\Connection', 'dsn' => 'mysql:host=localhost;dbname=demo', 'username' => 'root', 'password' => '', ], // 使用函數註冊"search" 組件 'search' => function () { return new app\components\SolrService; }, ],]
多謝各位。
發現可以通過命名空間解決這一個問題。
比如建立一個test目錄,然後統一為該目錄下所有的類檔案設定一個命名空間。