Laravel 5.4使用表单请求进行验证

时间:2017-03-23 18:14:21

标签: php laravel-5

我想使用表单请求来验证模型,所以我开始创建php artisan make:request TaskRequest并在我添加TaskRequest类之后`

 public function rules()
    {
        return [
            'name' => 'required|min:5',
        ];
    }   
    public function messages()
    {
        return [
            'name.required' => 'A title is required',
        ];
    }
`

和我的逻辑

Route::post('/tasks',function (\App\Http\Requests\TaskRequest $request){

    $task = new \App\Task();
    $task->name = $request->input("name");
    $task->save();

    return response()->json(['task was created',$task], http_response_code());
});

因此,当我尝试添加任务时,我收到错误HttpException, This action is unauthorized.,AuthorizationException ...

没有验证,这对我有用。那么我该如何解决这个问题呢?

2 个答案:

答案 0 :(得分:1)

每个(自创)请求都有一个authorize函数,用于确定是否允许用户发送请求。这对于检查管理员权限或类似功能非常有用。

在您的情况下,您只需返回true即可。可以在corresponding docs

中找到更多信息

TaskRequest中的授权功能如下所示:

/**
     * Determine if the user is authorized to make this request.
     *
     * @return bool
     */
    public function authorize()
    {
        return true;
    }

答案 1 :(得分:0)

在"表单请求"的自定义请求类中其中包含验证逻辑传递return:true;而不是return:false;,然后它将像魅力一样工作。

代码看起来如下,

    namespace App\Http\Requests;

    use Illuminate\Foundation\Http\FormRequest;

    class portfolioValidate 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 [
                'title'=> 'required',
                'content'=> 'required'
            ];
        }
    }

因为您可以使用中间件对包含此表单的页面进行身份验证...所以我们在FormRequest类中不需要该授权。因此,返回true将使其(验证)被授权用于所有情况。

我认为现在每个人都很清楚。