Console gii

Предварительное обсуждение найденных ошибок перед отправкой их авторам фреймворка, а также внесение новых предложений.
Ответить
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Console gii

Сообщение HQ0 »

Совсем недавно в yii2 добавили клёвую вещь — консольную версию gii.

Кажется я нашел косяк, который не знаю как _правильно_ исправить:

Запускаем

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

yii gii/controller --controller=default --actions=index,details
Команда абсолютно без угрызений совести создаст DefaultController (наследника \yii\web\Controller, кстати) в app/commands. В action-ах будет render, а во views/ - сгенерированные шаблоны. Единственная проблема это неверное (?) место контроллера.

Так ведь быть не должно, да ? :)

Всё дело config/console.php

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

'controllerNamespace' => 'app\commands',
Какое может быть красивое решение в рамках фреймворка, чтобы всё заработало верно?
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Console gii

Сообщение samdark »

--controllerNamespace?
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Console gii

Сообщение HQ0 »

В любом случае как-то неверно, что по-умолчанию \yii\web\Controller уходит в папку к \yii\console\Controller-ам.

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

yii help gii/controller
говорит что нет --controllerNamespace, есть --ns.

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

yii gii/controller --ns=app\controllers --controller=test --actions=index,details
всё равно генерирует в app/commands http://puu.sh/bBiMY/081f687407.png

Не нашел где используется ns помимо инициализации в yii2-gii\generators\controller\Generator.php
Я ведь там где надо смотрю ? :)
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Console gii

Сообщение HQ0 »

Вместе с пакетом msysgit ко мне пришел еще и bash.
Думаю что запись --ns=app\controllers слегка некорректна из-за \c, надо ведь писать --ns=app\\controllers, но проблему это не решает
http://puu.sh/bBjVm/884736f416.png
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Console gii

Сообщение HQ0 »

Итак! Мои кривые грабли в код выточенный опытными мастерами.

Моя задача была такая: сгенерировать из консоли веб-контроллер (app\controllers) и консольный контроллер (app\commands)
После моих изменений можно сделать так:

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

yii gii/controller --controller=test --actions=index,details --ns=app\\controllers
http://puu.sh/bCuCm/dca7d5f87e.png

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

yii gii/controller --controller=parser --baseClass=app\\console\\Application --actions=
http://puu.sh/bCuD6/4d3b7765f9.png

Из веб версии gii у меня тоже не работал (namespace-то ставится верный, но мне хочется папку менять!) Controller Namespace. http://puu.sh/bCuIn/43e9279d5d.png
А после изменений я могу сгенерировать из веб-gii контроллер и для app\commands и для app\controllers
http://puu.sh/bCuKG/dc01315590.png
http://puu.sh/bCuLn/51dd98edff.png

Мои костыли позволяют мне теперь генерировать то что мне надо в нужную папку.

Объясните мне что я делаю не так и как надо правильно. :(
https://github.com/Apmyp/yii2-gii/tree/ ... controller
https://github.com/Apmyp/yii2-gii/blob/ ... erator.php

Есть еще один пункт, который меня смущает. Дефолтные значения консольного генератора контроллеров. http://puu.sh/bCuPr/3d7182d851.png
Наследуем от yii\web\Application, но namespace - app\commands по-умолчанию.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Console gii

Сообщение HQ0 »

Итак2!

Я всё сделал неверно чуток выше. Да, оно работает, но...

Сейчас есть баг - yii gii/controller генерирует файл не туда куда надо. Должен в app/controllers вместо app/commands.
Для того чтобы сгенерировать комманду _не_надо_ (как я постом выше) ковырять gii/controller. Нужно запилить gii/command который будет генерировать код в app/commands/
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Console gii

Сообщение samdark »

https://github.com/Apmyp/yii2-gii/compa ... controller

Может всё и так... пока заметил только то, что можно проверять на yii\base\Application. Киньте pull request в основную репу с объяснением.

Дефолные значения да, не те.
HQ0
Сообщения: 182
Зарегистрирован: 2012.10.17, 17:21

Re: Console gii

Сообщение HQ0 »

Надеюсь мой французский будет всем понятен.

https://github.com/yiisoft/yii2/pull/5070
Аватара пользователя
samdark
Администратор
Сообщения: 9489
Зарегистрирован: 2009.04.02, 13:46
Откуда: Воронеж
Контактная информация:

Re: Console gii

Сообщение samdark »

Отличный французский.
Ответить