Yii2: Как создать команды модуля без имени контроллера?

Был аналогичный вопрос: «как создать консольную команду в модуле?", в котором содержится хороший ответ о том, как добавлять команды в ваши модули Yii2.

Однако результирующие команды должны быть в следующем формате:

./yii module_name/command/sub-command

где command соответствует имени контроллера консоли, а sub-command соответствует именам действий.

Как нам опустить имя контроллера и указать только имена действий, чтобы наши команды были в следующем формате:

./yii module_name/command


person mae    schedule 18.03.2018    source источник


Ответы (1)


Я не уверен, какова цель разделения консольных команд на модули и скрытия имени контроллера (например, сделать его DefaultController).

Но в любом случае, одним из возможных решений является настройка controllerMap в файле config\console.php (учитывая, что вы используете базовый шаблон).

$config = [
    'id' => 'basic-console',
    ...
    'controllerMap' => [
        'module_name' => [
            'class' => 'app\modules\module_name\commands\ConsoleController',
        ],
    ],
    ...
];

Итак, теперь, когда вы запускаете php yii module_name/<action_name>, он напрямую вызывает ConsoleController действия.

..так что php yii module_name/index приводит к module_name\ConsoleController->actionIndex() методу

person Yerke    schedule 19.03.2018
comment
Похоже, это почти единственное решение. - person mae; 20.03.2018