• TP5.1验证器的使用


    首先是验证层的定义

    namespace appindexvalidate;
    
    use thinkValidate;
    
    class User extends Validate
    {
        protected $rule =   [
            'name'  => 'require|max:25',
            'age'   => 'number|between:1,120',
            'email' => 'email',    
        ];
        
        protected $message  =   [
            'name.require' => '名称必须',
            'name.max'     => '名称最多不能超过25个字符',
            'age.number'   => '年龄必须是数字',
            'age.between'  => '年龄只能在1-120之间',
            'email'        => '邮箱格式错误',    
        ];
        

     

    在对应的user层可以使用

    namespace appindexcontroller;
    
    use thinkController;
    
    class Index extends Controller
    {
        public function index()
        {
            $data = [
                'name'  => 'thinkphp',
                'email' => 'thinkphp@qq.com',
            ];
    
            $validate = new appindexvalidateUser;
    
            if (!$validate->check($data)) {
                dump($validate->getError());
            }
        }
    }

     这是一种比较典型的使用验证层的方法

    还有就是一种数据验证

    namespace appindexvalidate;
    
    use thinkValidate;
    
    class User extends Validate
    {
        protected $rule = [
            'name'  =>  'checkName:thinkphp',
            'email' =>  'email',
        ];
        
        protected $message = [
            'name'  =>  '用户名必须',
            'email' =>  '邮箱格式错误',
        ];
        
        // 自定义验证规则
        protected function checkName($value,$rule,$data=[])
        {
            return $rule == $value ? true : '名称错误';
        }
    }

    当然在任何时候都可以在controller层进行验证数据,而不需要去Validata层追加文件进行规则写入

    前提是use thinkValidate;

    $validate = Validate::make([
        'name'  => 'require|max:25',
        'email' => 'email'
    ]);

     还有就是规则的验证场景定义:

    例如我们对用户的入库操作数据需要进行验证,

    但是后期唯一操作不需要在进行验证操作等实际应用:

    $data = [
        'name'  => 'thinkphp',
        'age'   => 10,
        'email' => 'thinkphp@qq.com',
    ];
    
    $result = $this->validate($data,'appindexvalidateUser.edit');
    
    if(true !== $result){
        // 验证失败 输出错误信息
        dump($result);
    }
  • 相关阅读:
    明星球队的傲慢
    VS2010测试方面的文章重点
    项目管理有感
    团队从小到大,再到体验团队
    css实现文字渐变
    echarts坐标轴文字过长省略
    mustache+mock
    你有选择的权利
    呵呵,初学者小编
    Centos7升级到OpenSSH_8.8p1、OpenSSL 1.1.1l版本
  • 原文地址:https://www.cnblogs.com/hoewang/p/10257213.html
Copyright © 2020-2023  润新知