zoukankan      html  css  js  c++  java
  • Kohana 的 Validate 校验数组

    kohana 3.3.0

    Validation
    ==========
    实现数据的校验,相比3.*等版本,移除了数据的过滤
    合并回调到rule中
    CODE:
    public function action_index()
    {
        //待校验数据
        $array=array(
            'username'=>'afasdfs',
            'ps'=>''
        );
        $validationnew Validation($array);
        //单个label
        $validation->label('username', 'USERRRRR');
        //多个label ORM中规则
        $validation->labels(array(
            'ps'=>'PSSSSS'
        ));
        //单个rule
        //参数说明:
        //    1.字段
        //    2.校验规则
        //        not_empty Valid类中方法或其他函数
        //        array($this,'function') 第一个为类,第二个为方法
        //    3.调用该方法的参数列表,可用代替值为bind的值,已定义有
        //        :validation 当前校验类
        //        :field 当前处理字段
        //        :value 当前处理字段的值
        //        :data 整个校验数据

        $validation->rule('ps', 'not_empty');
        //多个rule
        $validation->rule('username', 'not_empty')
                   ->rule('username', 'min_length', array(':value', 4))
                   ->rule('username',array($this,'hic'),array(':validation',':field'));
        $validation->rules('username', array(
                        array('max_length', array(':value', 5)),
                    ));
        if(!$validation->check()){
            //校验失败获取错误
            //参数为消息文件名
            //如果要用Valid类消息,可以在消息文件合并vaild的消息在返回(即合并消息数组)

            print_r($validation->errors('test'));
        }
        
    }
    public function hic(Validation $v,$vl){
        //$v->error($vl,"bad");
    }


    //以下为旧版本的使用....

    由于校验类数组的这个类没有相关的文档 ,做个笔记,提防以后忘记

    class Controller_Test extends Controller_Smarty{

        public function action_index(){

            $_GET=array(

                'a'=>'aaaaa ',

                'b'=>' '

            );

            $validate = Validate::factory($_GET);

            //@todo 这里开始

            //通过标签赋值显示字段

            //参数:字段,显示名称

            $validate->label('a', 'A属性');

            $validate->label('b', 'b属性');

            //字段设置为true的时候为全部字段

            //通过回调函数验证字段合法性

            //参数:字段 ,回调函数,额外参数

            $callbacks=array(

                array($this, 'a'),

            );

            $validate->callbacks('a', $callbacks);

            $validate->callback('a', array($this, 'a1'),array('pas1','pas2')); // function a($validate,$field,$params)

            $validate->callback('b', array($this, 'b'),array('pas1')); // function a1($validate,$field,$params)

            $rule= array(

                'min_length' => array(4),

                'max_length' => array(32),

                'regex' => array('/^[-\pL\pN_.]++$/uD'),

            );

            //通过规则验证字段合法性

            //规则函数的参数通过数组列表形式传递

            //参数:字段,规则数组

            $validate->rules('a',$rule);//使用规则,规则消息在validate

            //通过规则验证

            //参数:字段,规则函数,参数

            $validate->rule(true,'not_empty',null);//过滤

            //过滤

            //参数:字段,静态方法或函数,额外参数

            $validate->filter(true, 'trim');//过滤

            //静态方法或函数: static function fa($value,$params) 指定字段值等于返回值

            $validate->filter('a', get_class($this).'::fa',array('filterparams'));

            if($validate->check()){

                print_r($validate['a']);

                print_r($validate['b']);

            }else{

                //获取错误

                //参数:消息文件名,是否翻译

                $msg=$validate->errors('a');

                print_r($msg);

                $this->end();

            }

        }

        public function a1($vaildate,$filed,$par){

            //错误添加

            //参数:字段,消息文件中的字段,传入到消息文件的一维数组

            $vaildate->error('a', 'invalid',$par);//

        }

        public function a($vaildate,$filed,$par){

        }

        public function b($vaildate,$filed,$par){

        }

        public static function fa($value,$params){

            return '000000000';

        }

    }

     

    ORM中调用校验配置以下数组,最后调用check方法

    protected $_rules = array();

    protected $_callbacks = array();

    protected $_filters = array();

    protected $_labels = array();

     

    检测失败在属性: validate 中可以得到校验对象

  • 相关阅读:
    使用NBU进行oracle异机恢复
    mycat偶尔会出现JVM报错double free or corruption并崩溃退出
    exp导出数据时丢表
    service_names配置不正确,导致dg创建失败
    XML概念定义以及如何定义xml文件编写约束条件java解析xml DTD XML Schema JAXP java xml解析 dom4j 解析 xpath dom sax
    HTTP协议简介详解 HTTP协议发展 原理 请求方法 响应状态码 请求头 请求首部 java模拟浏览器客户端服务端
    java集合框架容器 java框架层级 继承图结构 集合框架的抽象类 集合框架主要实现类
    【JAVA集合框架一 】java集合框架官方介绍 Collections Framework Overview 集合框架总览 翻译 javase8 集合官方文档中文版
    java内部类深入详解 内部类的分类 特点 定义方式 使用
    再谈包访问权限 子类为何不能使用父类protected方法
  • 原文地址:https://www.cnblogs.com/liushannet/p/2132080.html
Copyright © 2011-2022 走看看