난 그냥 설정/main.php에 설정으로 얻을 here 설명과 같은 단계를했을 때 :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')
에는 구성 요소가 없으므로 구성 만 있습니다.
내가 뭘 잘못하고 있는지 제안 해주세요.
그건 나를 위해 일했습니다. 하지만 왜 구성 요소 클래스 이름을 선언해야합니까? I는 GII 통해 모듈을 생성 할 때 모듈의 초기화 함수 라인이 때문에'$ this-> setImport가 (어레이 ( \t \t \t 'tracking.models. *' \t \t \t 'tracking.components. *' \t \t));'. – Jurik
setImport는 PHP include_once와 비슷하지만 모든 파일을 예로들 수 있습니다. 추적/구성 요소/*. php. 구성에서 클래스 이름을 설정하면 처음 사용할 때 '새 클래스'를 의미합니다. 둘 다해야 해. Yii가 구성 요소로부터 어떤 클래스를 알 수 있었기 때문에 논리적입니까? 클래스 이름은 모듈 내에서 설정할 수 있지만 IMO는 클래스 이름이 동적으로 변경 될 때만 더 좋습니다. – RobM