РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
627 of 1392 menu

Правило required_unless

Правило required_unless применяется к полю формы и делает его обязательным, если указанное другое поле не равно одному из перечисленных значений. Правило принимает два или три параметра: имя поля, значение (или массив значений), при которых поле НЕ является обязательным.

Синтаксис

<?php use IlluminateValidationRule; $rules = [ 'field' => 'required_unless:other_field,value', ]; ?>

Пример

Давайте сделаем поле 'phone' обязательным, если поле 'contact_method' не равно 'email':

<?php use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; $request = new Request([ 'contact_method' => 'phone', 'phone' => '123456789', ]); $rules = [ 'phone' => 'required_unless:contact_method,email', ]; $validator = Validator::make($request->all(), $rules); if ($validator->passes()) { echo "Validation passed"; } else { echo "Validation failed"; } ?>

Результат выполнения кода:

"Validation passed"

Пример

Теперь попробуем отправить запрос без номера телефона, когда метод связи - телефон:

<?php use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; $request = new Request([ 'contact_method' => 'phone', ]); $rules = [ 'phone' => 'required_unless:contact_method,email', ]; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { $errors = $validator->errors()->all(); print_r($errors); } ?>

Результат выполнения кода:

["The phone field is required when contact method is not email."]

Пример

Использование с массивом значений - поле становится обязательным, если значение поля не равно ни одному из перечисленных:

<?php use IlluminateHttpRequest; use IlluminateSupportFacadesValidator; $request = new Request([ 'payment_method' => 'paypal', ]); $rules = [ 'card_number' => 'required_unless:payment_method,cash,bank_transfer', ]; $validator = Validator::make($request->all(), $rules); if ($validator->fails()) { $errors = $validator->errors()->all(); print_r($errors); } else { echo "Validation passed"; } ?>

Результат выполнения кода:

["The card number field is required when payment method is not cash, bank_transfer."]

Пример

Использование правила в форме в классе FormRequest:

<?php namespace AppHttpRequests; use IlluminateFoundationHttpFormRequest; class ProfileRequest extends FormRequest { public function authorize(): bool { return true; } public function rules(): array { return [ 'email' => 'required|email', 'phone' => 'required_unless:contact_method,email', 'contact_method' => 'required|in:email,phone', ]; } } ?>

Смотрите также

  • правило required,
    которое делает поле всегда обязательным
  • правило required_if,
    которое делает поле обязательным, если другое поле равно значению
  • правило required_with,
    которое делает поле обязательным, если присутствует другое поле
  • правило required_without,
    которое делает поле обязательным, если отсутствует другое поле
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить