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 中可以得到校验对象

  • 相关阅读:
    MySQL基础
    DNS域名解析服务
    仿Mars MP3播放器项目5
    仿Mars MP3播放器项目4
    仿Mars MP3播放器项目3
    仿Mars MP3播放器项目2
    仿Mars MP3播放器项目1
    JAVA 随记1
    Redis和Memcache的区别
    php用smtp发送邮件
  • 原文地址:https://www.cnblogs.com/liushannet/p/2132080.html
Copyright © 2011-2022 走看看