В отличие от метода контроллера $this->validate()
, статическая функция Validator::make()
не выдаст ошибку, если проверка не удалась.
Вам нужно будет проверить, не произошла ли ошибка, и вернуть сообщения об ошибках, используя ->fails()
Метод валидатора:
$validator = Validator::make($request->all(), [
'answer.*.title' => 'required',
'answer.*.question_id' => 'required',
]);
if ($validator->fails()) {
return redirect('post/create')
->withErrors($validator)
->withInput();
}
foreach ($request->answers as $answer) {
$new_answer = new Answer();
$new_answer->title = $answer['title'];
$new_answer->question_id = $answer['question_id'];
$new_answer->save();
}
return response()->json($request);
В качестве альтернативы вы можете использовать метод $this->validate()
:
$validatedData = $this->validate($request, [
'answer.*.title' => 'required',
'answer.*.question_id' => 'required',
]);
Обратите внимание, что мы используем $request
вместо $request->all()
.
Также обратите внимание, что при использовании этого метода вы получите массив ответов в $validatedData
, поэтому вам нужно будет соответствующим образом изменить код.