В Laravel существует несколько способов валидации полей массива. Вот некоторые из них:
1. Валидация в контроллере:
use IlluminateSupportFacadesValidator; public function store(Request $request) { $validator = Validator::make($request->all(), [ 'my_array.*.field1' => 'required|string', 'my_array.*.field2' => 'numeric', ]); if ($validator->fails()) { // Если валидация не прошла, возвращаем сообщения об ошибках return response()->json($validator->errors(), 400); } // Если валидация прошла успешно, выполняем сохранение в базу данных или другие действия }
В этом примере my_array
- это имя поля массива в запросе. *
после my_array
указывает, что мы валидируем каждый элемент массива. field1
и field2
- это названия полей, которые нужно валидировать. Мы также указываем правила валидации для каждого поля.
2. Валидация внутри форм-реквеста:
Вы можете создать свой собственный класс форм-реквеста, который содержит правила валидации:
class MyRequest extends FormRequest { public function rules() { return [ 'my_array.*.field1' => 'required|string', 'my_array.*.field2' => 'numeric', ]; } }
Используйте этот класс в вашем контроллере:
public function store(MyRequest $request) { // Если все правила валидации пройдены, Laravel автоматически переходит к этому месту }
3. Расширение правил валидации:
Вы можете создать свое собственное правило валидации, которое позволит вам настроить более сложную логику проверки для полей массива. Для этого вам нужно создать класс правила валидации:
use IlluminateContractsValidationRule; class CustomRule implements Rule { public function passes($attribute, $value) { // Добавьте здесь свою логику проверки поля массива } public function message() { return 'Поле массива не прошло проверку.'; } }
Затем вы можете использовать это правило в своем классе форм-реквеста или непосредственно в контроллере:
use AppRulesCustomRule; public function store(Request $request) { $validator = Validator::make($request->all(), [ 'my_array.*' => ['required', new CustomRule], ]); if ($validator->fails()) { // Обрабатываем ошибку валидации } // ... }
В каждом из этих способов вы можете настроить необходимую логику валидации для полей массива, чтобы убедиться, что они соответствуют вашим требованиям.