我已在我的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',
];
它一直有效,直到它被验证为真,我的意思是如果标题和正文通过它得到验证,但是当我不发送任何标题或正文数据时,我没有得到错误作为回应,我看到属于Web中间件的主页,我想将错误数据作为响应返回。
我的控制器是这样的:
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);
}
帮我解决这些问题。感谢
答案 0 :(得分: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');
}
答案 1 :(得分:0)
使用照亮\合同\验证\验证器;
使用Illuminate \ Http \ Exceptions \ HttpResponseException;
之后
protected function failedValidation(Validator $validator) {
throw new HttpResponseException(response()->json($validator->errors(), 422));
}