Laravel自定义表单请求不验证

时间:2018-05-01 18:28:17

标签: php laravel laravel-5.6 laravel-request laravel-response

我已在我的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);
}

帮我解决这些问题。感谢

2 个答案:

答案 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));
}