正确访问模块中的Yii2组件的方法?

时间:2016-01-12 09:55:56

标签: php yii2

我已经创建并配置了一个模块fooModule。我需要在模块内部创建一个组件。

这是我在main.php中的模块配置

'modules'=>array(
    'fooModule'=>array(
         'class' => 'app\modules\fooModule\Module',
         'components'=>array(
            'testComponent'=>array(
                'class'=>'app\modules\fooModule\components\testComponent',
            ),
        ),
    ),
),

在文件夹模块fooModule中,我创建了一个文件夹组件,其中包含一个文件testComponent.php

TestComponet.php有一个扩展\ yii \ base \ Component的类测试。见下文

namespace app\modules\fooModule\component;

class test extends \yii\base\Component {

        public function __construct() {
                private $bar;     
        }

        public function exampleFunction() {
                echo 'am alive, come and look for me please!!';     
        }

}
  

如何访问fooModule Controller中的测试类?

3 个答案:

答案 0 :(得分:10)

使用Yii::$app->getModule('fooModule')->testComponent->exampleFunction();访问模块组件。

答案 1 :(得分:3)

从模块控制器访问模块组件而不使用硬编码模块的ID的最优雅方法如下:

$this->module->testComponent->exampleFunction();

答案 2 :(得分:0)

这看起来很优雅

Module::getInstance()->testComponent