Запуск консольной команды модуля

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Запуск консольной команды модуля

Сообщение sashaaro »

Есть yii2-app-advanced приложения..в папке modules находятся мои модули которые подключаются в конфигах..В одном модуле есть команда modules/mailer/commands/MailController... Как мне его вызвать через консоль..подключал в console/config/main-local свой модуль...и пытался вызвать "yii mailer/mail/notify" но пишет что команда не найдена
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Запуск консольной команды модуля

Сообщение german.igortcev »

Цепани модуль в консоль в console/config/main

Так же как и

Код: Выделить всё

'modules' => [
        'gii' => 'yii\gii\Module',
    ],
Вызывать должен php yii controller/action . ну а вообще если письмо отправлять нужно то можно сделать другими способами.
Последний раз редактировалось german.igortcev 2015.02.04, 10:04, всего редактировалось 1 раз.
Alex@
Сообщения: 568
Зарегистрирован: 2014.12.16, 09:24

Re: Запуск консольной команды модуля

Сообщение Alex@ »

sashaaro писал(а):подключал в console/config/main-local свой модуль...
Это каким образом?
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

в console/config/main.php
модуль в консоль в console/config/main есть!

Код: Выделить всё

'id' => 'app-console',
    'basePath' => dirname(__DIR__),
    'bootstrap' => ['log', 'gii'],
    'controllerNamespace' => 'console\controllers',
    'modules' => [
        'gii' => 'yii\gii\Module',
    ], 
в main-local.php

Код: Выделить всё

'modules' => [
        'mailer' => [
            'class' => \modules\mailer\Module::className(),
        ]
    ], 
php yii mail/notify пишет Error: unknown command "mailer/motify"
Последний раз редактировалось sashaaro 2015.02.04, 10:29, всего редактировалось 3 раза.
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

german.igortcev писал(а): Вызывать должен php yii controller/action . ну а вообще если письмо отправлять нужно то можно сделать другими способами.
Какими?
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Запуск консольной команды модуля

Сообщение german.igortcev »

sashaaro писал(а):
german.igortcev писал(а): Вызывать должен php yii controller/action . ну а вообще если письмо отправлять нужно то можно сделать другими способами.
Какими?
Например есть swiftmailer
http://www.yiiframework.com/doc-2.0/ext ... index.html

Код: Выделить всё

To use this extension, simply add the following code in your application configuration:

return [
    //....
    'components' => [
        'mailer' => [
            'class' => 'yii\swiftmailer\Mailer',
        ],
    ],
];

You can then send an email as follows:

Yii::$app->mailer->compose('contact/html')
     ->setFrom('[email protected]')
     ->setTo($form->email)
     ->setSubject($form->subject)
     ->send(); 
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

german.igortcev писал(а): Например есть swiftmailer
Я им и пользуюсь..Проблема не в том как отправлять сообщение.А как вызвать команду из модуля.
german.igortcev
Сообщения: 251
Зарегистрирован: 2014.08.18, 14:01

Re: Запуск консольной команды модуля

Сообщение german.igortcev »

Что ты пытаешься сделать, для чего тебе вызывать нужно
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

мне нужно вызывать через консоль actionNotify, который находится в модуле mailer commands\MailController (extends yii\console\Controller) ..Для cron -а что бы отправлять сообщения
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

конфиг консоли:

Код: Выделить всё

    'modules' => [
        'twitter' => console\modules\twitter\Module::className()
    ], 
в модуле соответственно контроллер и экшн в нем - все работает.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

\modules\mailer\Module::className(), - неймспейс-то верный? в какой директории у вас находится дира относительно корня?
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

да, в \modules\mailer.
Сам модуль подключается так же к web приложению и нормально работает
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

sashaaro писал(а):да, в \modules\mailer.
Сам модуль подключается так же к web приложению и нормально работает
алиас @modules есть?
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

нет, а нужно? и если бы был, то что?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

sashaaro писал(а):нет, а нужно? и если бы был, то что?
для автозагрузки классов в Yii необходимо создать алиас с именем корневого неймспейса.
\backend\modules\.... - @backend
\modules\... - @modules
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

для console/config/main

Код: Выделить всё

'controllerMap' => array(
        'mail' => \modules\mailer\commands\MailController::className(),
    ),
     
Работает..
Но если у меня будет несколько контроллеров. Каждый раз добавлять? Возможно проще было бы добавить целым модулем и вызывать через /module/controller/action как для обычного веб приложения.Странно что так не работает. Может я что то упустил.
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

sashaaro писал(а):для console/config/main

Код: Выделить всё

'controllerMap' => array(
        'mail' => \modules\mailer\commands\MailController::className(),
    ),
Работает..
Но если у меня будет несколько контроллеров. Каждый раз добавлять? Возможно проще было бы добавить целым модулем и вызывать через /module/controller/action как для обычного веб приложения.Странно что так не работает. Может я что то упустил.
а в какой дире должны быть контроллеры модуля?
Аватара пользователя
sashaaro
Сообщения: 34
Зарегистрирован: 2013.06.16, 17:38

Re: Запуск консольной команды модуля

Сообщение sashaaro »

zelenin писал(а): для автозагрузки классов в Yii необходимо создать алиас с именем корневого неймспейса.
\backend\modules\.... - @backend
\modules\... - @modules
В смысле? Для автозагрузки классов есть autoload..
У меня в web приложении все подхватывает само. В консоли я так же указал модуль, но не смог запустить.
Ты хочешь сказать что консольное приложение подхватывает только те модули на которых есть соответствующий алиас?? Зачем он если мы указываем Базовый класс модуля в настройках
zelenin писал(а): а в какой дире должны быть контроллеры модуля?
Это знает как раз наш модуль...свойство controllerNamespace..
По умолчанию moduleNamespase\controllers\ соответственно наймспейсу
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

sashaaro писал(а): Это знает как раз наш модуль...свойство controllerNamespace..
По умолчанию moduleNamespase\controllers\ соответственно наймспейсу
а контроллеры, которые ты запускаешь в консоли, у тебя где?
zelenin
Сообщения: 10596
Зарегистрирован: 2013.04.20, 11:30

Re: Запуск консольной команды модуля

Сообщение zelenin »

sashaaro писал(а):
zelenin писал(а): для автозагрузки классов в Yii необходимо создать алиас с именем корневого неймспейса.
\backend\modules\.... - @backend
\modules\... - @modules
В смысле? Для автозагрузки классов есть autoload..
именно! посмотри как он работает https://github.com/yiisoft/yii2/blob/ma ... utoloader-
Закрыто