如何加载Yii模块组件?

时间:2013-12-10 14:54:58

标签: php yii yii-components yii-modules

当我执行上述here所述的步骤时,我只是在config / main.php中使用config:

<?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 个答案:

答案 0 :(得分:3)

您必须为组件指定类,例如在config(TrackingClassName)中:

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

答案 1 :(得分:0)

您仍然可以通过Yii::app()->getModule('tracking')->tracking访问它。组件将在首次使用之前创建。

答案 2 :(得分:0)