@SlimSavernake

Как сделать правило проверки значения поля в зависимости от значения другого поля?

Есть таблицы населенных пунктов и улиц связанных через "locality_id"

В объявлении существует поле выбора населенного пункта и поле выбора улицы. Необходимо проверить, что улица входит в населенный пункт который выбрали в поле выше.
Приведенный ниже код работает только при редактировании, а мне нужна проверка также при добавлении.
Подскажите как правильно это сделать?

return [
['locality_id', 'in', 'range' => [1,2,3,4,5,6,7,8]],
['street_id', 'in', 'range' => Street::find()->select('id')->where(['locality_id' => $this->locality_id])->asArray()->column(), 'message' => 'Улица из другого города.'],
]
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
slo_nik
@slo_nik Куратор тега Yii
Доброе утро.
Что-то Вы намудрили уж слишком.
Достаточно проверить, что id является числом, а какому населённому пункту принадлежит улица это уже не заботы валидации.
У Вас, как я понял, две таблицы.
При создании записи делаете два взаимосвязанных выпадающих списка.
В первом выбираете город, как только содержимое первого списка меняется, отправляете ajax запрос на сервер с id населённого пункта и выбираете из второй таблицы улицы где locality_id равен id населённого пункта.
Если таких записей не найдено, возвращаете сообщение, что ничего не найдено.
А валидацию оставьте в покое.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы