Русское сообщество разработки на PHP-фреймворке Laravel.
Ты не вошёл. Вход тут.
Допустим, мы хотим спросить через форму ввода у пользователя хотя бы один из двух контактов: телефон и/или адрес электронной почты. Это значит, что в правилах валидации будет правило required_without для обоих полей:
$this->validate($request, [
'email' => 'required_without:tel|email',
'tel' => 'required_without:email|regex:/(01)[0-9]{9}/'
], $messages);
Нам необходимо валидировать формат данных только тогда, когда они введены, но в коде выше формат проверяется всегда. Поскольку нам нужно знать хотя бы один контакт, то правило sometimes не подходит.
Не в сети
Попробуйте правило bail (ставится самым первым), может сработает. Честно говоря, ни разу его не использовал.
Ещё вариант
$this->validate($request, [
'email' => 'required_without:tel' . !empty($request->email) ? '|email' : '',
'tel' => 'required_without:email' . !empty($request->tel) ? '|regex:/(01)[0-9]{9}/' : '',
], $messages);
Не в сети
в 5.4 добавилась миддлварь, которая пустые строки автоматически превращает в null. для того чтобы это не сбивало с толку валидаторы, добавилось правило валидирования nullable. так что код видимо должен представлять собой что-то вроде
$this->validate($request, [
'email' => 'required_without:tel|nullable|email',
'tel' => 'required_without:email|nullable|regex:/(01)[0-9]{9}/'
], $messages);
Не в сети
Попробуйте правило bail (ставится самым первым), может сработает
bail для другого предназначен. это правило полностью прекращает валидацию если поле не валидно и не проверяет оставшиеся. по дефолту валидатор при обнаружении ошибки продолжает работать и проверять остальные поля и собирает вообще все ошибки всех полей.
Не в сети
bail для другого предназначен. это правило полностью прекращает валидацию если поле не валидно и не проверяет оставшиеся. по дефолту валидатор при обнаружении ошибки продолжает работать и проверять остальные поля и собирает вообще все ошибки всех полей.
Прекращает валидацию этого поля, но не остальные поля. Так в документации написано.
Не в сети
Прекращает валидацию этого поля, но не остальные поля
окей, был неправ
Не в сети
Звучит как похвала
Не в сети