Запросы пользовательских форм Laravel не проверяются
Я создал пользовательский запрос формы в моем laravel 5.6
что-то вроде этого:
<?php
namespace Noetic\Plugins\blog\Requests;
use Illuminate\Foundation\Http\FormRequest;
class StorePostRequest extends FormRequest
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
];
}
}
Когда я ничего не помещаю в правила, я получаю работающие контроллеры, а когда я помещаю какое-то правило внутрь, я полагаю
return [
'title' => 'required',
'body' => 'required',
];
Это работает до тех пор, пока оно не будет подтверждено true, я имею в виду, что если заголовок и тело переданы, оно будет проверено, но когда я не отправляю данные для заголовка или тела, я не получаю ошибки в ответ, я вижу домашнюю страницу, принадлежащую сети промежуточное программное обеспечение, я хочу вернуть данные об ошибке в качестве ответа.
Мой контроллер примерно такой:
public function store( StorePostRequest $request )
{
if ($request->fails()) {
return $this->errorResponse($request->errors()->all());
}
$data = $request->only('title', 'body');
$post = Post::create($data);
return response()->json(['post'=> $post ],200);
}
Помоги мне с этим. Спасибо
1 ответ
В вашей функции контроллера вам не нужно проверять правильность, просто попробуйте с успехом.
Обработчик обработает вашу проверку
public function store( StorePostRequest $request )
{
$data = $request->only('title', 'body');
$post = Post::create($data);
return response()->json(['post'=> $post ],200);
}
В вашем обработчике
use Illuminate\Validation\ValidationException;
if ($exception instanceof ValidationException)
{
return response($exception->errors())->header('Content-Type', 'application/json');
}
Используйте Illuminate\Contracts\Validation\Validator;
использовать Illuminate\Http\Exceptions\HttpResponseException;
после этого
protected function failedValidation(Validator $validator) {
throw new HttpResponseException(response()->json($validator->errors(), 422));
}