• thinkphp验证器


    验证器分为独立验证和验证器

    独立验证:https://www.kancloud.cn/manual/thinkphp5/129352

    验证器:

    验证器定义: app/index/validate/User.php

    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'        => '邮箱格式错误',    
    ];
    
        protected $scene = [
            'edit'  =>  ['name','age'],
        ];
    }
    

    在控制器中使用和验证场景

    $result = $this->validate($data,'User.edit');
    if(true !== $result){
        // 验证失败 输出错误信息
        dump($result);
    }
    
    ### 在模型中使用:
    
    如果当前模型就是当前验证器则:
    $User = new User;
    // 调用当前模型对应的User验证器类进行数据验证
    $result = $User->validate(true)->save($data);
    if(false === $result){
        // 验证失败 输出错误信息
        dump($User->getError());
    }
    
    如果需要调用的验证器类和当前的模型名称不一致,则可以使用:
    $User = new User;
    // 调用Member验证器类进行数据验证
    $result = $User->validate('Member')->save($data);
    if(false === $result){
        // 验证失败 输出错误信息
        dump($User->getError());
    }
    
    主要区别在于validate()方法中的参数
    
    
    
    
    ### 模型中增加场景验证
    
    $User = new User;
    
    $result = $User->validate('User.edit')->save($data);
    if(false === $result){
        // 验证失败 输出错误信息
        dump($User->getError());
    }
    	
    ### 内置规则:
    

    https://www.kancloud.cn/manual/thinkphp5/129356

    使用内置的规则验证单个数据,可以使用静态调用的方式。
    // 日期格式验证
    Validate::dateFormat('2016-03-09','Y-m-d'); // true
    // 验证是否有效的日期
    Validate::is('2016-06-03','date'); // true
    // 验证是否有效邮箱地址
    Validate::is('thinkphp@qq.com','email'); // true
    // 验证是否在某个范围
    Validate::in('a',['a','b','c']); // true
    // 验证是否大于某个值
    Validate::gt(10,8); // true
    // 正则验证
    Validate::regex(100,'d+'); // true
    来自 <https://www.kancloud.cn/manual/thinkphp5/162814> 
    ### 自定义验证规则
    
    <?php
    	namespace appindexvalidate;
    	use thinkValidate;
    	class User extends Validate
    	{
            // 验证规则
            protected $rule = [
                ['nickname', 'require|min:5', '昵称必须|昵称不能短于5个字符'],
                ['email', 'checkMail:thinkphp.cn', '邮箱格式错误'],
                ['birthday', 'dateFormat:Y-m-d', '生日格式错误'],
            ];
            // 验证邮箱格式 是否符合指定的域名
            protected function checkMail($value, $rule)
            {
            	return 1 === preg_match('/^w+([-+.]w+)*@' . $rule . '$/', $value);
            }
    }
    
  • 相关阅读:
    54、servlet3.0-ServletContainerInitializer
    53、servlet3.0-简介&测试
    52、[源码]-Spring源码总结
    51、[源码]-Spring容器创建-容器创建完成
    50、[源码]-Spring容器创建-Bean创建完成
    49、[源码]-Spring容器创建-创建Bean准备
    48、[源码]-Spring容器创建-初始化事件派发器、监听器等
    Atom编辑器入门到精通(四) Atom使用进阶
    Atom编辑器入门到精通(三) 文本编辑基础
    Atom编辑器入门到精通(二) 插件的安装和管理
  • 原文地址:https://www.cnblogs.com/qinsilandiao/p/13432417.html
Copyright © 2020-2023  润新知