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

Метод forEach

Метод forEach класса Rule применяется для создания правил валидации, которые применяются к каждому элементу массива. Первым параметром передаётся замыкание, которое получает текущий ключ и значение элемента, и возвращает массив правил для этого элемента. Этот метод особенно полезен, когда необходимо валидировать каждый элемент массива с учётом его позиции или значения.

Синтаксис

<?php use Illuminate\Validation\Rule; Rule::forEach($callback); ?>

Пример

Давайте провалидируем массив чисел, чтобы каждый элемент был чётным числом:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; class NumberController extends Controller { public function validate(Request $request) { $validator = Validator::make($request->all(), [ 'numbers' => [ 'required', 'array', Rule::forEach(function ($value, $key) { return ['integer', 'min:1', 'max:100']; }), ], ]); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'Validation passed'; } echo $res; } } ?>

Пример

Давайте провалидируем массив строк, где каждый элемент должен быть строкой длиной от 2 до 10 символов:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; class StringController extends Controller { public function validate(Request $request) { $validator = Validator::make($request->all(), [ 'items' => [ 'required', 'array', Rule::forEach(function ($value, $key) { return ['string', 'min:2', 'max:10']; }), ], ]); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'All items are valid'; } echo $res; } } ?>

Результат выполнения кода при передаче массива ['a', 'abcde', 'abcdefghij']:

[ "The items.0 must be at least 2 characters.", "The items.2 must not be greater than 10 characters." ]

Пример

Давайте провалидируем массив с учётом ключа элемента, где элементы с чётными индексами должны быть чётными числами:

<?php namespace App\Http\Controllers; use Illuminate\Http\Request; use Illuminate\Validation\Rule; use Illuminate\Support\Facades\Validator; class IndexController extends Controller { public function validate(Request $request) { $validator = Validator::make($request->all(), [ 'data' => [ 'required', 'array', Rule::forEach(function ($value, $key) { $rules = ['integer']; if ($key % 2 === 0) { $rules[] = 'even'; } else { $rules[] = 'odd'; } return $rules; }), ], ]); if ($validator->fails()) { $res = $validator->errors()->all(); } else { $res = 'All data is valid'; } echo $res; } } ?>

Результат выполнения кода при передаче массива [2, 3, 4, 5]:

"All data is valid"

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

  • метод when,
    который условно применяет правила валидации
  • метод requiredIf,
    который делает поле обязательным по условию
  • метод in,
    который проверяет вхождение значения в список
  • метод sometimes,
    который добавляет правила при выполнении условия
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить