zoukankan      html  css  js  c++  java
  • 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)); } } 这样当你的参数不符合要求时就可以返回相对应的错误信息了
  • 相关阅读:
    hdu 4123 树形dp+rmq
    POJ 2761 Feed the dogs 求区间第k大 划分树
    hdu 4585 shaolin 平衡树
    *hdu 4616 Game 树形DP
    hdu 5379 Mahjong tree 树形DP入门
    CF 581F Contest Page 树形DP
    hdu 2778 LCR 模拟题
    hdu 2896 病毒侵袭 AC自动机
    hdu 2222 Keywords Search AC自动机模板题
    透过c的编程原则,来规范自己现在的一些编程习惯
  • 原文地址:https://www.cnblogs.com/hanmengya/p/11486858.html
Copyright © 2011-2022 走看看