zoukankan      html  css  js  c++  java
  • FuelPHP 系列(四) ------ Validate 验证

    一、可用规则:

    1、required  不能为 null, false or empty string.;

    2、required_with  关联某个字段,关联字段有值则该字段必须有值;

    3、match_value  两个参数:param1,要匹配的字符;param2,是否严格(true则全等,===);

    4、match_pattern  匹配 preg;

    5、match_field  匹配 field,比如再次输入密码确认(全等===);

    6、match_collection  两个参数:param1,要匹配的array;param2,是否严格;

    7、min_length  最小长度;

    8、max_length  最大长度;

    9、exact_length  长度是否是指定长度;

    10、valid_date  两个参数:param1,时间 formate;param2,是否严格(默认为 true);

    11、valid_email  单个邮箱验证;

    12、valid_emails  多个邮箱验证,参数为分隔符(默认为 commas);

    13、valid_url  URL 验证;

    14、valid_ip  IP 验证,参数为 'ipv4' or 'ipv6'

    15、numeric_min  数字最小值(不是数字的看做 0);

    16、numeric_max  数字最大值(不是数字的看做 0);

    17、numeric_between  两个参数:min,max;

    18、valid_string  验证 string,参数为 array();

    string 验证规则:

    FLAG DESCRIPTION
    alpha 字母
    uppercase 只允许大写字母
    lowercase 只允许小写字母
    specials 允许特殊字符
    numeric 数字
    spaces 空格
    newlines 换行符
    tabs TAB键
    dots
    commas 逗号
    punctuation 允许点、逗号、感叹号、问号、冒号和半冒号
    dashes 允许中横线、下划线
    singlequotes 单引号
    doublequotes 双引号
    quotes 允许单引号、双引号
    forwardslashes 斜杠
    backwardslashes 反斜杠
    slashes 允许斜杠、反斜杠
    brackets 括号
    braces 大括号
    utf8 向正则表达式添加UTF8修饰符

    二、可扩展验证方法,方法名以 '_validation_' 开头,例如:

      // 防止重复添加
        public static function _validation_unique($val, $options)
        {
            list($table, $field) = explode('.', $options);
    
            $result = DB::select(DB::expr("LOWER ("$field")"))
            ->where($field, '=', Str::lower($val))
            ->from($table)->execute();
    
            return ! ($result->count() > 0);
        }
    
        // 判断是否为大写字母
        public function _validation_is_upper($val)
        {
            return $val === strtoupper($val);
        }

    *获取当前验证 object,验证 field

    //获取当前验证 object
    $active = Validation::active();
    //获取当前验证字段
    $field = Validation::active_field();
    $field = $active::actice_field(); 
    //当前 field 的 label
    $label = $active::active_field()->get_attribute('label');
    //当前验证设置错误信息
    Validation::active()->set_message('unique', 'The field :label must be unique, but :value has already been used');

    三、验证方法

    $val = Validation::forge();
    
    $val->add_field('name', '名字','required|unique');
    //或者
    $val->add('name', '名字')->add_rule('required')->add_rule('unique');
    
    $val->set_message('required', 'You have to fill in your :label');
    
    //验证
    $val->run();
    
    //获取错误信息
    $val->error();
    $val->error_message()
    //获取验证过的信息
    $val->validated('username');
    //加载自己扩展的验证类
    $val->add_callable('Myrules');    //静态加载,只能调用类中的 static 方法
    $val->add_callable(new MyRules());    //非静态加载
  • 相关阅读:
    电子书下载:Beginning ASP.NET 2.0 AJAX
    电子书下载:C# 4.0 How To
    电子书下载:Pragmatic Unit Testing in C# with NUnit
    7 个最好的.Net开源CMS系统
    电子书下载:Professional ASP.NET 2.0 Server Control and Component Development
    电子书下载:Beginning ASP.NET 2.0 Databases From Novice to Professional
    电子书下载:Professional .NET 2.0 Generics
    蛙蛙推荐:[算法练习]最长不完全匹配子串频率计算
    蛙蛙推荐:F#实现并行排序算法
    蛙蛙推荐:蛙蛙教你发明一种新语言之二代码生成
  • 原文地址:https://www.cnblogs.com/rendd/p/9200635.html
Copyright © 2011-2022 走看看