laravel request 类进行form表单验证

为了简化controller参数验证,我们单独建立一个文件夹,作为我们参数层验证;具体异常抛出,以及Form 

首先在app\http的文件夹下创建一个新的文件件Requests,进入新创建的文件夹Requests,可以在创建一个文件夹Nav,用于区分不同业务的功能。也可以不用创建

在新创建的文件夹下,创建一个类,例如NavRequest

<?php
 
namespace App\Http\Requests\Nav;
 
use Illuminate\Foundation\Http\FormRequest;
 
class NavRequest extends FormRequest
{
    public function authorize()
    {
        return true;
    }
 
    public function rules()
    {
        $rules = [
            'h5_id' => 'required |exists:h5_template,h5_id',
            'font_color'=>'string|nullable',
            'select_color'=>'string|nullable',
            'background_color'=>'string|nullable',
            'position'=>'int|required| between:0,1'
        ];
        return $rules;
    }
 
    public function messages()
    {
        $message = [
            'h5_id.required'      =>'h5_id必须填写',
            'h5_id.exists'      =>'h5_id不存在!',
            'position.required'      =>'请选择位置!'
        ];
        return $message;
    }
 
}
//第一个方法:authorize(),控制用户访问权限
//第二个方法:$rules(),返回验证的数组
//第三个方法:$message(),返回自定义的错误信息

然后创建一个控制器例如UserController

<?php
namespace App\Http\Controllers;

use App\Http\Requests\Nav\NavRequest;

public function index(NavRequest $request)  //使用刚刚创建的Request类
    {
        $data = $request->all();
        dd($data);
    }

但是此时出现了一个问题,就是无论怎么样,都不会提示报错信息,而只是不合乎要求就返回首页

这时我们可以重写FormRequest这个类的方法

例如:创建一个RequestController类继承FormRequest并重写其中的方法

//1.在这里可以重新定义一个requestController类,,
//2.然后让他继承 FormRequest,
//3.最后重写FormRequest这个基类的failedvalidation方法。另一种方法就是直接到FormRequeste类中将该方法进行更改也可以
class RequestController extends FormRequest { protected function failedValidation(Validator $validator) { $error= $validator->errors()->all(); throw new HttpResponseException(response()->json(['msg'=>'error','code'=>'500','data'=>$error[0]], 500)); } } 这样当你的参数不符合要求时就可以返回相对应的错误信息了

 

posted @ 2019-09-08 16:04  小呆1107  阅读(1960)  评论(0编辑  收藏  举报