• laravel request 类进行form表单验证


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

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

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

    <?php
     
    namespace AppHttpRequestsNav;
     
    use IlluminateFoundationHttpFormRequest;
     
    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 AppHttpControllers;
    
    use AppHttpRequestsNavNavRequest;
    
    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)); } } 这样当你的参数不符合要求时就可以返回相对应的错误信息了
  • 相关阅读:
    Linux A机器免密码SSH登录B机器
    Linux 系统命令笔记
    整理笔记有感而发
    Linux(Centos)快速搭建SVN
    APP接口自动化测试JAVA+TestNG(三)之HTTP接口测试实例
    Windows服务器环境下jenkins下载和安装
    Win10系统如何在防火墙里开放端口
    Java 通过地址获取经纬度
    一、springBoot简介与环境搭建
    2018年尚硅谷《全套Java、Android、HTML5前端视频》
  • 原文地址:https://www.cnblogs.com/hanmengya/p/11486858.html
Copyright © 2020-2023  润新知