laravel自定义验证类

laravel自定义验证类

准备条件

  • laravel版本5.5x~
  • 对laravel有一点熟悉

开始

封装 获取控制器且成员方法的公共函数

  • 前提交件:新建一个公共类,里面写公共方法
/**
 *  获取当前控制器与方法
 */
function getCurrentAction()
{
    $route = \Route::currentRouteAction();
    list($class, $action) = explode('@', $route);

    return ['controller' => $class, 'action' => $action];
}
  • composer.json 文件下面的自动加载 这个公共类

  • "autoload": {
            "psr-4": {
                "App\\": "app/"
            },
            "classmap": [
                "database/seeds",
                "database/factories"
            ],
            "files": [   //在files里面写上地址,框架运行自动加载这个类
                "app/Helpers/functions.php"    
            ]
        },
    

封装验证类

  • 新建一个FormsRequest.php

  • <?php
    
    namespace App\Http\Requests;
    
    use Illuminate\Foundation\Http\FormRequest;   //继承原生的框架表单验证类
    
    class FormsRequest 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()
        {
            $action = getCurrentAction()['action'];   //获取当前请求的方法名
            $request_rule = $this->rulesData();       //获取验证规则
            return $request_rule[$action]??[];
        }
    }
    
    

规则类

  • 规则类主要是,一个控制器对应一个规则类,每个方法对应不同的验证规则

  • <?php
    
    
    namespace App\Http\Requests\Test;
    
    use App\Http\Requests\FormsRequest;
    
    class TestRequest extends FormsRequest    //此处继承验证类
    {
        /**
         * @return array
         *      验证规则
         */
        public function rulesData()    //验证方法
        {
            return [
                'index'=>[    //控制器下的方法名
                    'name'=>'required',   //字段验证规则
                ],
                'xxx'=>[
                    
               
              ]
            ];
        }
    }
    

控制器

<?php

namespace App\Http\Controllers\Test;
use App\Http\Controllers\Controller; 
use App\Http\Requests\Test\TestRequest;
use App\Services\Test\TestService;
use App\Models\User;
use Illuminate\Support\Facades\Redis;


class TestController extends BaseController {
    
    public function index(TestRequest $request){
        return (new TestService())->test($request);
    }
    
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值