Правильный способ доступа к компонентам Yii2 в ваших модулях?

Я создал и настроил модуль fooModule. Мне нужно создать компонент внутри модуля.

Это моя конфигурация для моего модуля в main.в PHP

'modules'=>array(
    'fooModule'=>array(
         'class' => 'appmodulesfooModuleModule',
         'components'=>array(
            'testComponent'=>array(
                'class'=>'appmodulesfooModulecomponentstestComponent',
            ),
        ),
    ),
),

в модуле foomodule папки я создал компоненты папки с файлом testComponent.в PHP

TestComponet.php имеет тест класса, который расширяет yiibaseComponent. Смотрите ниже

namespace appmodulesfooModulecomponent;

class test extends yiibaseComponent {

        public function __construct() {
                private $bar;     
        }

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

}

Как получить доступ к тестовому классу в контроллере fooModule ?

2 ответов


использовать Yii::$app->getModule('fooModule')->testComponent->exampleFunction(); для компонента модуля доступа.


самый элегантный способ доступа к компоненту модуля из контроллера модуля без идентификатора модуля hardcoding выглядит следующим образом:

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