Почему Yii2 Captcha не видит Action в модуле?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Аватара пользователя
Digital-SolutionRu
Сообщения: 8
Зарегистрирован: 2016.07.25, 12:15
Контактная информация:

Почему Yii2 Captcha не видит Action в модуле?

Сообщение Digital-SolutionRu »

Итак. Все действия происходят на фреймворке Yii2 в модуле feedback
Маршрутизация:

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

public $urlRules = [
        'prefix' => 'feedback',
        'routePrefix' => 'feedback',
        'rules' => [
            'send' => 'send',
            'captcha' => 'default/captcha',
        ],
    ];
Контроллер:

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

class DefaultController extends Controller
{
public function actions()
    {
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                //'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }
}
Модель

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

...
public function rules()
    {
...
 $rules[] = [$field, 'captcha', 'captchaAction'=>'/feedback/captcha'];
...
}
...
Форма:

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

...
 echo $form->field($this, $field)->widget(Captcha::className([
                        'captchaAction' => '/feedback/captcha'
                    ]));
...

Если зайти на страницу
site.ru/feedback/captcha
то все ок - мы увидим картинку (каптчу).
Но если зайти в форму обратной связи, то получаю ошибку:
Exception (Invalid Configuration) 'yii\base\InvalidConfigException' with message 'Invalid CAPTCHA action ID: /feedback/captcha'

Пробовал в модели прописать так:

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

$rules[] = [$field, 'captcha', 'captchaAction'=>'/feedback/default/captcha'];
В этом случае ошибка не возникает, но адрес картинки становится такой:
/feedback/site/captcha?v=5c4016f819eec6.36931450, откуда появляется site не понятно, ну и соответственно картинки там нет..
Аватара пользователя
Digital-SolutionRu
Сообщения: 8
Зарегистрирован: 2016.07.25, 12:15
Контактная информация:

Re: Почему Yii2 Captcha не видит Action в модуле?

Сообщение Digital-SolutionRu »

Сейчас пробую дебажить все построчно, похоже, что проблема в самом фреймворке
\yii\base\Module в методе createController

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

 $module = $this->getModule($id);
        if ($module !== null) {
            //exit('not module '.$id);
            return $module->createController($route);
        }
        }
Если раскоментировать строчку получаем
no module feedback
Хотя все остальное связанное с этим модулем работает.
Ответить