Как при включенной enableAjaxValidation избежать автосохранения формы?

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
i-programmer
Сообщения: 101
Зарегистрирован: 2015.08.24, 18:50

Как при включенной enableAjaxValidation избежать автосохранения формы?

Сообщение i-programmer »

В некоторых формах проекта (в 12 из 40) при создании или редактировании в одном/двух/трёх полях стоит серверная валидация, т.к. нужно проверять уникальность поля или связки. Поэтому стоит `enableAjaxValidation`. Валидация происходит при потере фокуса, при изменении значения в поле и при клике на кнопку сохранить. При этом, как только последнее поле в форме будет заполнено, конечно сработает `ajaxValidation` и форма на сервере сохранится и произойдёт редирект при успешности операции. Такое поведения меня не устраивает.

Я хочу: Оставить валидацию "на лету", т.е. сохранить и не трогать опции `validateOnChange = true` и `validateOnBlur = true`, но при этом, чтобы само сохранение уже всей корректной формы происходило только при нажатии на кнопку "Сохранить", т.е. `onSubmit`. Как это сделать? Что предусмотреть? В какую сторону копать? Таких методов будет много (12 форм с create/update методами)
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как при включенной enableAjaxValidation избежать автосохранения формы?

Сообщение Dominus »

Смотрите контроллер где происходит валидация и сохранение формы.
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Аватара пользователя
ElisDN
Сообщения: 5845
Зарегистрирован: 2012.10.07, 10:24
Контактная информация:

Re: Как при включенной enableAjaxValidation избежать автосохранения формы?

Сообщение ElisDN »

Вынести валидацию в отдельный 'validationUrl' => ['validate', 'id' => $model->id]
Аватара пользователя
Dominus
Сообщения: 892
Зарегистрирован: 2013.03.14, 21:27
Откуда: Россия, Иваново
Контактная информация:

Re: Как при включенной enableAjaxValidation избежать автосохранения формы?

Сообщение Dominus »

Например так:
View
https://github.com/Dominus77/yii2-advan ... rd.php#L20

Controller
https://github.com/Dominus77/yii2-advan ... #L203-L211

и не забыть добавить экшен в правила urlManager
Не спорь с дураком, иначе окружающие не правильно поймут кто из вас дурак!
Ответить