Не заполнять заново поле после ошибки валидации

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

Не заполнять заново поле после ошибки валидации

Сообщение vo_wonder »

Добрый день. Прошу прощения, если тема уже была, найти не смог.
Допустим, на основе модели RegisterForm существует форма регистрации с полями:

+-------------------------------+
| Имя (textInput) |
+-------------------------------+
| Пароль (passwordInput) |
+-------------------------------+
+-+
+-+ Согласен с условиями (checkbox)

Допустим, при отправке формы поля "Имя" и "Согласен с условиями" проходят валидацию, "Пароль" - нет. Как при этом не заполнять провалидированные поля правильными значениями заново? В частности, нужно, чтобы чекбокс при обновлении страницы был "не нажат".
someweb
Сообщения: 552
Зарегистрирован: 2017.03.09, 10:12

Re: Не заполнять заново поле после ошибки валидации

Сообщение someweb »

Присвойте false после load()
Чтобы правильно задать вопрос, нужно знать бо́льшую часть ответа. Роберт Шекли.
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

Re: Не заполнять заново поле после ошибки валидации

Сообщение vo_wonder »

someweb писал(а): 2019.01.15, 13:55 Присвойте false после load()
Спасибо, попробую
Аватара пользователя
maleks
Сообщения: 1992
Зарегистрирован: 2012.12.26, 12:56

Re: Не заполнять заново поле после ошибки валидации

Сообщение maleks »

по событию after_validate проверьте и сбросьте

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

    /**
     * Event handler.
     * 
     * @param \yii\base\Event $event
     */
    public function handleAfterValidate($event)
    {
        if ($this->hasErrors()) {
            //setting password to empty
            if (isset($this->password)) {
                $this->password = '';
            }
            if (isset($this->password_repeat)) {
                $this->password_repeat = '';
            }
        }
    } 
vo_wonder
Сообщения: 19
Зарегистрирован: 2017.05.17, 20:57

Re: Не заполнять заново поле после ошибки валидации

Сообщение vo_wonder »

Ну, я сделал не очень элегантно:

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

...
else
	$model->agree = false;
	return $this->render('register', [
	'model'  => $model,
	...
]);
...
Всем спасибо!
Ответить