zoukankan      html  css  js  c++  java
  • Tp-validate进阶thinkphp

    阶段1:基础

    application/controller/v1/Banner.php

    <?php
    namespace appapicontrollerv1;
    use thinkController;
    use thinkvalidate;
    
    class Banner extends controller{
        public function index(){
            //http://localhost/thinkphp5/public/index.php/api/v1.Banner/index
    
        }
        public function  getBanner(){
            
            $data=array(
                'name'=>'dash',
                'email'=>'wolichihua2011@163.com'
    
            );
            //独立验证
            $validate=new Validate([
    
                'name'=>'require|max:10',
                'email'=>'email'
            ]);
    
            //batch()批量验证 否则只返回最后一个getError验证信息
            $result=$validate->batch()->check($data);//返回布尔
            var_dump($result);
            var_dump($validate->getError());//返回错误信息
    
        } 
    
    }

    阶段二:讲=将验证规则单独放到其他的类文件中

    <?php
    namespace appapicontrollerv1;
    use thinkController;
    use thinkvalidate;
    //use appapivalidateTestValidate;
    class Banner extends controller{
        public function index(){
            //http://localhost/thinkphp5/public/index.php/api/v1.Banner/index
        }
        public function  getBanner($id){
            
            $data=array(
                'name'=>'dash',
                'email'=>'wolichihua2011@163.com'
    
            );
    
            //验证器 直接new 
            $validate= new appapivalidateTestValidate();
    
             //或者引入命名空间在new use appapivalidateTestValidate (application/api/validate/TestValidate.php)
           $validate= new TestValidate();//必须有这个命名空间 use appapivalidateTestValidate
            //batch()批量验证 否则只返回最后一个getError验证信息
            $result=$validate->batch()->check($data);//返回布尔
            var_dump($result);
            var_dump($validate->getError());//返回错误信息
    
        } 
    
    }
    application/api/validate/TestValidate.php
    <?php
    namespace appapivalidate;
    use thinkValidate;
    class TestValidate extends Validate{
        protected $rule =[
            'name'=>'require|max:10',
            'email'=>'email'        
    
        ];
    }

    阶段三:封装验证参数:

     application/controller/v1/Banner.php

    <?php
    namespace appapicontrollerv1;
    use thinkController;
    use thinkvalidate;
    use appapivalidateIDMustBePositiveInt;
    class Banner extends controller{
        public function index(){
            http://localhost/thinkphp5/public/index.php/api/v1.Banner/index
        }
        public function  getBanner($id){
            
            (new IDMustBePositiveInt())->goCheck();
    
        } 
    
    }

    application/api/validate/BaseValidate.php

    <?php
    namespace appapivalidate;
    use thinkRequest;
    use thinkValidate;
    use thinkException;
    class BaseValidate extends Validate{
        public function goCheck(){
            // 获取http参数
            // 对这些参数做检验
            $request= Request::instance();
            $params=$request->param();
            $result=$this->check($params);
            if (!$result) {
                $error=$this->error;
                throw new Exception($error, 1);
                
            }else{
                return true;
            }
        }
    }

    application/api/validate/IDMustBePositiveInt.php

    <?php
    namespace appapivalidate;
    class IDMustBePositiveInt extends BaseValidate{
        protected $rule=array(
    
            'id'=>'require|isPositiveInteger'
        );
    
        //自定义验证规则
        protected function isPositiveInteger($value, $rule='', $data='', $field='')
        {
            if (is_numeric($value) && is_int($value + 0) && ($value + 0) > 0) {
                return true;
            }
            return $field . '必须是正整数';
        }
    }

    阶段4:讲自定义规则挪到BaseValidate.php中,其他自定义的也一样只保留rule规则就行了

    阶段5:创建更多的自定义验证类

    阶段六:自定义验证类文件多了,就需要工厂类来封装啦!

  • 相关阅读:
    如果拷贝项目出现各种找不到文件的时候,基本就是没有标记,或者文件名的问题,Could not find resource mybatis.xml,解决方法
    The error may exist in com/bjpowernode/dao/StudentDao.xml ### Cause: org.apache.ibatis.builder.BuilderException: Error parsing SQL Mapper Configuration. Cause: org.apache.ibatis.builder.BuilderExcept
    一个简单jpa例子
    @PathVariable
    java.lang.NoClassDefFoundError: org/apache/log4j/Priority的问题解决
    yml中driver-class-name: com.mysql.jdbc.Driver 解析不到的问题
    docker 操作镜像的基本操作
    Navicat 远程连接Docker容器中的mysql 报错:1251
    spring boot中常用的配置文件的重写
    MVC最全jar包
  • 原文地址:https://www.cnblogs.com/lichihua/p/9697354.html
Copyright © 2011-2022 走看看