Проверка Laravel для массивов - PullRequest
0 голосов
/ 13 июня 2018

У меня есть этот запрос:

GET http://example.com/test?q[]=1&q[]=2&q[]=3

И у меня есть этот маршрут:

Route::get('test', function(Request $req) {
    $req->validate(['q' => 'array']);
});

Как мне сделать, чтобы добавить другие правила проверки для каждого элемента этого массива, используя валидатор Laravel?Например, я хочу проверить, чтобы каждое значение q имело минимум 2.

Спасибо за вашу помощь.

Ответы [ 2 ]

0 голосов
/ 13 июня 2018

Посмотрите документацию о проверяющих массивах .

$validator = Validator::make($request->all(), [
'person.*.email' => 'email|unique:users',
'person.*.first_name' => 'required_with:person.*.last_name',
]);

Вы также можете сделать это в своем контроллере, используя объект запроса, документацию о логике проверки .

public function store(Request $request)
{
  $validatedData = $request->validate([
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
  ]);

  // The blog post is valid...
}

Существует третий вариант, когда у вас много правил проверки и вы хотите отделить логику в вашем приложении.Взгляните на Запросы формы

1) Создайте класс запроса формы

php artisan make:request StoreBlogPost

2) Добавьте правила в класс, созданные в app / Http / Requestsdirectory.

public function rules()
{
  return [
    'title' => 'required|unique:posts|max:255',
    'body' => 'required',
  ];
}

3) Получите запрос в вашем контроллере, он уже подтвержден.

public function store(StoreBlogPost $request)
{
  // The incoming request is valid...

  // Retrieve the validated input data...
  $validated = $request->validated();
}
0 голосов
/ 13 июня 2018

Вы можете сделать:

Route::get('test', function(Request $req) {
    $req->validate([
        'q' => 'array',
        'q.*' => 'min:2'
    ]);
});

Для получения дополнительной информации о проверке массивов см. => laravel.com / docs / 5.6 / validation # validating-arrays

...