當我不喜歡描述here我只是配置獲得的config/main.php步驟:如何加載Yii模塊組件?
<?php
return array(
'modules' => array(
'tracking' => array(
'components' => array(
'tracking' => array(
'foo' => 'bar'
)))));
這個結果,當我的var_dump Yii::app()->getModule('tracking')
:
object(TrackingModule)#148 (20) {
["defaultController"]=> string(7) "default"
["layout"]=> NULL
["controllerNamespace"]=> NULL
["controllerMap"]=> array(0) {}
["_controllerPath":"CWebModule":private]=> NULL
["_viewPath":"CWebModule":private]=> NULL
["_layoutPath":"CWebModule":private]=> NULL
["preload"]=> array(0) {}
["behaviors"]=> array(0) {}
["_id":"CModule":private]=> string(8) "tracking"
["_parentModule":"CModule":private]=> NULL
["_basePath":"CModule":private]=> string(79) "..."
["_modulePath":"CModule":private]=> NULL
["_params":"CModule":private]=> NULL
["_modules":"CModule":private]=> array(0) {}
["_moduleConfig":"CModule":private]=> array(0) {}
["_components":"CModule":private]=> array(0) {}
["_componentConfig":"CModule":private]=> array(1) {
["tracking"]=> array(1) {
["foo"]=> string(4) "bar"
}
}
["_e":"CComponent":private]=> NULL
["_m":"CComponent":private]=> NULL
}
我希望我可以訪問模塊組件通過Yii::app()->getModule('tracking')->tracking
。但正如你所看到的Yii::app()->getModule('tracking')
沒有組件,只是它的配置。
任何建議我做錯了什麼?
這對我有用。但爲什麼我要聲明組件類名稱?因爲當我經由GII產生的模塊有一個在模塊的初始函數的行:'$這 - > setImport(陣列( \t \t \t 'tracking.models *', \t \t \t 'tracking.components *', \t \t));'。 – Jurik
setImport就像PHP的include_once,但所有的文件,例如。在tracking/components/*。php中。在第一次使用時,在config中設置類名意味着'新類'。你必須這樣做。它的邏輯是因爲Yii如何從組件中知道哪些類?類名稱可以在模塊內部設置,但是隻有當類名稱動態變化時,IMO纔會更好。 – RobM