Laravel表单验证,优雅一点的写法,控制器里面不要写太多东西,

首先  BaseValidator基类

fails()){
            //验证数据不通过,跑出异常
            $arr=array(
                'message'=>$validator->errors()->first()  ,
                'date'=>'参数错误',
                'status'=>800,
            );
            exit(json_encode($arr,JSON_UNESCAPED_UNICODE));
        }
    }
}

 

再设置UserValidator

 

'required',
        'pass'=>'required',
        'test'=>'required'
    );

    protected $message=array(
        'name.required' => '用户名不能为空',
        'pass.required'=>'密码不能为空',
    );

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

    /**自定义的scen,数据分组。可以传入此值作为只验证那些信息
     * Notes:
     * User: ChenJulong
     * Date: 2019/7/16
     * Time: 17:05
     * @param bool $scen
     * @return bool|mixed
     */
    public function scen($scen=false){
        $s=array(
            'login'=>['name','pass'],
        );
        if ($scen){
            return $s[$scen];
        }else return false;
    }

    /**
     * Notes:
     * User: ChenJulong
     * Date: 2019/7/16
     * Time: 16:28
     * @param $data
     */
    public function check($data,$scen=false){
        $this->yanzheng($data,$this->scen($scen),$this->rules,$this->message);
    }
}

 

 

最后再控制器中调用

 

    public function test(Request $request){
        $input=$request->all();
        (new GoodsValidator())->check($input);
    }

 

没找到laravel5.8中再哪里可以用Request::all()之类的方法来获取参数,才开始接触laravel。

不然的话还可以更优雅一点。

自己加了一个类似于thinkphp的scen 来作为只验证那些参数

你可能感兴趣的:(Laravel)