Модель, дополнительные данные из валидатора
-
- Сообщения: 5
- Зарегистрирован: 2018.02.15, 23:36
Модель, дополнительные данные из валидатора
Добрый день!
Задача следующая.
Один из атрибутов модели (код плательщика НДС) проверяется внешним сервисом, он проверяет валидность и при успехе получаем дополнительные данные - название и адрес, ими надо заполнить два соответствующих атрибута. При невалидности - ошибка.
При этом нам нужно знать заполненность и корректность данных не только при вводе, но и по ходу дела что бы определить, какое действие предложить юзеру - дозаполнить профиль или совершать действия по существу.
Как правильно и не костыльно все это реализовать?
Делаем валидатор, тут все ок.
Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Как не совершать лишних запросов к стороннему сервису при повторных попытках на лету в правилах контроля доступа?
Задача следующая.
Один из атрибутов модели (код плательщика НДС) проверяется внешним сервисом, он проверяет валидность и при успехе получаем дополнительные данные - название и адрес, ими надо заполнить два соответствующих атрибута. При невалидности - ошибка.
При этом нам нужно знать заполненность и корректность данных не только при вводе, но и по ходу дела что бы определить, какое действие предложить юзеру - дозаполнить профиль или совершать действия по существу.
Как правильно и не костыльно все это реализовать?
Делаем валидатор, тут все ок.
Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Как не совершать лишних запросов к стороннему сервису при повторных попытках на лету в правилах контроля доступа?
Re: Модель, дополнительные данные из валидатора
Пишем код Javascript, который всё это делает по результатам выполнения запроса.Alessandro писал(а): ↑2018.02.15, 23:49 Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Если серверный код, то запоминаем результат в сессии в том виде, какой минимально необходим, например, это может быть просто флаг.Alessandro писал(а): ↑2018.02.15, 23:49 Как не совершать лишних запросов к стороннему сервису при повторных попытках на лету в правилах контроля доступа?
Далее при необходимости достаём это значение из сессии и проверяем по нему.
По сути, мы кешируем результат запроса на время жизни пользовательской сессии.
-
- Сообщения: 5
- Зарегистрирован: 2018.02.15, 23:36
Re: Модель, дополнительные данные из валидатора
Запрос (валидатор) возвращает только ошибки. Как передать что-то другое из валидатора?Nex-Otaku писал(а): ↑2018.02.16, 23:56Пишем код Javascript, который всё это делает по результатам выполнения запроса.Alessandro писал(а): ↑2018.02.15, 23:49 Как при успехе ajaxValidation интерактивно передать данные в другие поля формы?
Re: Модель, дополнительные данные из валидатора
1. Открываем доку.
2. Берём первый пример отсюда:
http://www.yiiframework.com/doc-2.0/gui ... validation
3. Пишем экшен, который возвращает результат валидации + дополнительные данные.
4. В Javascript-колбэке (см. п.2) получаем ответ, делаем всё, что необходимо с дополнительными данными, возвращаем результат валидации.
5. PROFIT )
2. Берём первый пример отсюда:
http://www.yiiframework.com/doc-2.0/gui ... validation
3. Пишем экшен, который возвращает результат валидации + дополнительные данные.
4. В Javascript-колбэке (см. п.2) получаем ответ, делаем всё, что необходимо с дополнительными данными, возвращаем результат валидации.
5. PROFIT )
-
- Сообщения: 5
- Зарегистрирован: 2018.02.15, 23:36
Re: Модель, дополнительные данные из валидатора
Получается нужно будет валидатор в экшне делать и в валидатора отдельно(для сервер сайд)?
Re: Модель, дополнительные данные из валидатора
В экшене вызываете свой отдельный валидатор и запихиваете в ответ дополнительные данные + результат валидации. Да, этот экшен будет работать только на клиентскую валидацию в AJAX-запросе.
Насчёт валидации при отправке формы - она конечно, тоже должна быть. Какая там будет логика, и будет ли там снова вызываться этот валидатор - решать вам.
Насчёт валидации при отправке формы - она конечно, тоже должна быть. Какая там будет логика, и будет ли там снова вызываться этот валидатор - решать вам.
-
- Сообщения: 5
- Зарегистрирован: 2018.02.15, 23:36
Re: Модель, дополнительные данные из валидатора
Нормальный ли план использовать isAttributeChanged() для ликвидации излишних запросов?
Re: Модель, дополнительные данные из валидатора
Не вижу вашего кода, но вообще нормально использовать всё что угодно, лишь бы код работал ) И если в чём-то не уверены, то смотрите исходный код (в данном случае фрейморка), чтобы представлять, как это работает. Это лучший способ.
-
- Сообщения: 5
- Зарегистрирован: 2018.02.15, 23:36
Re: Модель, дополнительные данные из валидатора
Основная идея была в том, что бы не слать дополнительный запрос, а получить все заодно с ответом валидации.
Re: Модель, дополнительные данные из валидатора
Это понятно. Сделайте.