Модель, дополнительные данные из валидатора

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
Alessandro
Сообщения: 5
Зарегистрирован: 2018.02.15, 23:36

Модель, дополнительные данные из валидатора

Сообщение Alessandro »

Добрый день!
Задача следующая.
Один из атрибутов модели (код плательщика НДС) проверяется внешним сервисом, он проверяет валидность и при успехе получаем дополнительные данные - название и адрес, ими надо заполнить два соответствующих атрибута. При невалидности - ошибка.
При этом нам нужно знать заполненность и корректность данных не только при вводе, но и по ходу дела что бы определить, какое действие предложить юзеру - дозаполнить профиль или совершать действия по существу.
Как правильно и не костыльно все это реализовать?
Делаем валидатор, тут все ок.
Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Как не совершать лишних запросов к стороннему сервису при повторных попытках на лету в правилах контроля доступа?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модель, дополнительные данные из валидатора

Сообщение Nex-Otaku »

Alessandro писал(а): 2018.02.15, 23:49 Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Пишем код Javascript, который всё это делает по результатам выполнения запроса.
Alessandro писал(а): 2018.02.15, 23:49 Как не совершать лишних запросов к стороннему сервису при повторных попытках на лету в правилах контроля доступа?
Если серверный код, то запоминаем результат в сессии в том виде, какой минимально необходим, например, это может быть просто флаг.
Далее при необходимости достаём это значение из сессии и проверяем по нему.
По сути, мы кешируем результат запроса на время жизни пользовательской сессии.
Alessandro
Сообщения: 5
Зарегистрирован: 2018.02.15, 23:36

Re: Модель, дополнительные данные из валидатора

Сообщение Alessandro »

Nex-Otaku писал(а): 2018.02.16, 23:56
Alessandro писал(а): 2018.02.15, 23:49 Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Пишем код Javascript, который всё это делает по результатам выполнения запроса.
Запрос (валидатор) возвращает только ошибки. Как передать что-то другое из валидатора?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модель, дополнительные данные из валидатора

Сообщение Nex-Otaku »

1. Открываем доку.

2. Берём первый пример отсюда:
http://www.yiiframework.com/doc-2.0/gui ... validation

3. Пишем экшен, который возвращает результат валидации + дополнительные данные.

4. В Javascript-колбэке (см. п.2) получаем ответ, делаем всё, что необходимо с дополнительными данными, возвращаем результат валидации.

5. PROFIT )
Alessandro
Сообщения: 5
Зарегистрирован: 2018.02.15, 23:36

Re: Модель, дополнительные данные из валидатора

Сообщение Alessandro »

Получается нужно будет валидатор в экшне делать и в валидатора отдельно(для сервер сайд)?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модель, дополнительные данные из валидатора

Сообщение Nex-Otaku »

В экшене вызываете свой отдельный валидатор и запихиваете в ответ дополнительные данные + результат валидации. Да, этот экшен будет работать только на клиентскую валидацию в AJAX-запросе.

Насчёт валидации при отправке формы - она конечно, тоже должна быть. Какая там будет логика, и будет ли там снова вызываться этот валидатор - решать вам.
Alessandro
Сообщения: 5
Зарегистрирован: 2018.02.15, 23:36

Re: Модель, дополнительные данные из валидатора

Сообщение Alessandro »

Нормальный ли план использовать isAttributeChanged() для ликвидации излишних запросов?
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модель, дополнительные данные из валидатора

Сообщение Nex-Otaku »

Не вижу вашего кода, но вообще нормально использовать всё что угодно, лишь бы код работал ) И если в чём-то не уверены, то смотрите исходный код (в данном случае фрейморка), чтобы представлять, как это работает. Это лучший способ.
Alessandro
Сообщения: 5
Зарегистрирован: 2018.02.15, 23:36

Re: Модель, дополнительные данные из валидатора

Сообщение Alessandro »

Основная идея была в том, что бы не слать дополнительный запрос, а получить все заодно с ответом валидации.
Nex-Otaku
Сообщения: 831
Зарегистрирован: 2016.07.09, 21:07

Re: Модель, дополнительные данные из валидатора

Сообщение Nex-Otaku »

Это понятно. Сделайте.
Ответить