Проблема с капчей в модуле

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Alexander_S
Сообщения: 98
Зарегистрирован: 2015.07.12, 13:27

Проблема с капчей в модуле

Сообщение Alexander_S »

Всем привет.

В basic приложении есть модуль /modules/user, в модуле есть модель регистрации SignupForm:

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

class SignupForm extends Model
{
    ....
    public $verifyCode;
    
     public function rules()
    {
        return [
            ....
            ['verifyCode', 'captcha', 'captchaAction' => \yii\helpers\Url::toRoute('/user/default/captcha')],
        ];
    }
}

так же в этом же модуле есть контроллер DefaultController с экшеном Капчи и экшеном, выводящем форму регистрации:

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

class DefaultController extends Controller
{
    ....
    
    public function actions()
    {
        return [
            'captcha' => [
                'class' => 'yii\captcha\CaptchaAction',
                'fixedVerifyCode' => YII_ENV_TEST ? 'testme' : null,
            ],
        ];
    }
    
    ....
    
    
    public function actionSignup()
    {
        $model = new SignupForm;

        if ($model->load(Yii::$app->request->post())) {
            if ($user = $model->signup()) {
                return $this->goHome();
            }
        }

        return $this->render('signup', [
            'model' => $model,
        ]);
    }
}

и в этом же модуле есть представление, выводящее эту форму регистрации:

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

<?php $form = ActiveForm::begin([
    'id' => 'form-signup',
]); ?>

....

<?= $form->field($model, 'verifyCode')->widget(Captcha::className(), [
    'captchaAction' => \yii\helpers\Url::toRoute('/user/default/captcha'),
    'template' => '<div class="row"><div class="col-lg-3">{image}</div><div class="col-lg-6">{input}</div></div>',
]) ?>

<div class="form-group">
    <?= Html::submitButton(Yii::t('user/main', 'Signup'), ['class' => 'btn btn-primary', 'name' => 'signup-button']) ?>
</div>

<?php ActiveForm::end(); ?>

Проблема в том, что при обновлении картинки капчи (клик по картинке) - капча не проходит валидацию! Проходит валидацию только при обновлении страницы, т.е. при первоначальной загрузке формы.

Rules-ы все уже поотключал, все равное не работает!

Причем в этом же приложении есть контроллеры и представления с формами ,использующие Капчу (правда все они не в модулях) - они все работают корректно.

Подскажите, из-за чего это может быть?
andrei.obuhovski
Сообщения: 610
Зарегистрирован: 2015.07.16, 10:50

Re: Проблема с капчей в модуле

Сообщение andrei.obuhovski »

Хотя, у вас может заработать, если указать адрес 'default/captcha'
Alexander_S
Сообщения: 98
Зарегистрирован: 2015.07.12, 13:27

Re: Проблема с капчей в модуле

Сообщение Alexander_S »

andrei.obuhovski писал(а):https://github.com/yiisoft/yii2/issues/10910
Спасибо, видимо в 2.0.7 какой-то баг
andrei.obuhovski писал(а):Хотя, у вас может заработать, если указать адрес 'default/captcha'
Нет, проблема осталась.
Аватара пользователя
SilverFire
Сообщения: 23
Зарегистрирован: 2013.10.24, 13:59
Откуда: Kiev
Контактная информация:

Re: Проблема с капчей в модуле

Сообщение SilverFire »

Спасибо за репорт, проблему исправили

https://github.com/yiisoft/yii2/issues/10910
Ответить