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

Метод sometimes

Метод sometimes класса Validator используется для условной валидации полей. Он позволяет добавлять правила проверки к полю, только если переданное замыкание возвращает true, либо если другой указанный поле имеет определённое значение. Метод особенно полезен, когда необходимо проверять поле только при определённых условиях, например, при выполнении сложной бизнес-логики.

Первым параметром метод принимает имя или массив имён полей, вторым - условие (замыкание или имя другого поля с значением), третьим - массив правил валидации. Если условие выполняется, правила применяются к указанным полям.

Синтаксис

<?php $validator->sometimes($field, $condition, $rules); ?>

Пример

Давайте создадим валидатор и применим правило sometimes для поля 'password', если поле 'is_admin' равно 1:

<?php use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; $data = [ 'is_admin' => 1, 'password' => 'secret123' ]; $rules = [ 'is_admin' => 'required|boolean' ]; $validator = Validator::make($data, $rules); $validator->sometimes('password', 'required|min:8', function ($input) { return $input->is_admin == 1; }); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'Validation passed'; } echo $res; ?>

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

"Validation passed"

Пример

Давайте применим правило sometimes к полю 'email', если поле 'has_email' равно 1. Используем упрощённый синтаксис с передачей имени поля и ожидаемого значения:

<?php use Illuminate\Support\Facades\Validator; $data = [ 'has_email' => 1, 'email' => 'admin@example.com' ]; $rules = [ 'has_email' => 'required|boolean' ]; $validator = Validator::make($data, $rules); $validator->sometimes('email', 'required|email', 'has_email=1'); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'Validation passed'; } echo $res; ?>

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

"Validation passed"

Пример

Давайте применим несколько правил к нескольким полям с использованием метода sometimes:

<?php use Illuminate\Support\Facades\Validator; use Illuminate\Validation\Rule; $data = [ 'user_type' => 'premium', 'credit_card' => '1234-5678-9012-3456', 'bonus_points' => 100 ]; $rules = [ 'user_type' => 'required|string' ]; $validator = Validator::make($data, $rules); $validator->sometimes(['credit_card', 'bonus_points'], 'required|numeric', function ($input) { return $input->user_type == 'premium'; } ); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'Validation passed'; } echo $res; ?>

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

"Validation passed"

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

  • метод fails,
    который проверяет, провалилась ли валидация
  • метод passes,
    который проверяет, прошла ли валидация успешно
  • метод errors,
    который возвращает все ошибки валидации
  • правило required_if,
    которое делает поле обязательным при выполнении условия
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить