2013-12-10 6 views
0

난 그냥 설정/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')에는 구성 요소가 없으므로 구성 만 있습니다.

내가 뭘 잘못하고 있는지 제안 해주세요.

답변

3

당신은 (TrackingClassName) 설정 예를 들면, 구성 요소의 클래스를 지정해야합니다 :

'modules' => array(
    'tracking' => array(
     'foo' => 'bar', 
     'components' => array(
      'tracking' => array(
       'class' => 'TrackingClassName', 
      ),... 
+0

그건 나를 위해 일했습니다. 하지만 왜 구성 요소 클래스 이름을 선언해야합니까? I는 GII 통해 모듈을 생성 할 때 모듈의 초기화 함수 라인이 때문에'$ this-> setImport가 (어레이 ( \t \t \t 'tracking.models. *' \t \t \t 'tracking.components. *' \t \t));'. – Jurik

+0

setImport는 PHP include_once와 비슷하지만 모든 파일을 예로들 수 있습니다. 추적/구성 요소/*. php. 구성에서 클래스 이름을 설정하면 처음 사용할 때 '새 클래스'를 의미합니다. 둘 다해야 해. Yii가 구성 요소로부터 어떤 클래스를 알 수 있었기 때문에 논리적입니까? 클래스 이름은 모듈 내에서 설정할 수 있지만 IMO는 클래스 이름이 동적으로 변경 될 때만 더 좋습니다. – RobM

0

여전히 Yii::app()->getModule('tracking')->tracking을 통해 액세스 할 수 있습니다. 구성 요소는 처음 사용하기 전에 만들어집니다.

+0

나는()이 ('YII :: 응용 프로그램을 수행 할 때 -> getModule ('tracking') -> tracking') call 그냥 PHP가'객체가 아닌 객체를 호출한다 .'라는 에러가 난다. – Jurik

관련 문제