codeigniter - 自定义验证

时间:2014-07-25 12:37:46

标签: php codeigniter validation

这是我对form_validation的扩展类:

<?php
class MY_Form_validation extends CI_Form_validation
{
    function __construct($config = array()) {
         parent::__construct($config);
    }
    function count_errors(){
        if (count($this->_error_array) === 0){
            return 0;
        }
        else
            return count($this->_error_array);
    }

    public function max_number($num, $val) {
        if($num > $val){
            $this->set_message("max_number", "The %s can not be greater then "  . $val);
            return false;
        }
    }

    public function min_number($num, $val) {
        if($num < $val){
            $this->set_message("min_number", "The %s can not be smaller then "  . $num);
            return false;
        }
    }

    public function error_array(){
        return $this->_error_array;
    }
}

然后在控制器中我设置了这样的规则,例如&#34; num&#34;字段:

$this->form_validation->set_rules('num', "Number", 'required|numeric|min_number[1]|max_number[99]');

例如56次通过,但也是1903次。

但如果num字段为0就可以。

因此,这仅适用于min_num,但不适用于max_num。

我在这里做错了什么?

1 个答案:

答案 0 :(得分:1)

Codeigniter已经有了内置函数greater_than[1]less_than[99]

但是,要使你的函数正常工作,你需要返回true(嗯,!== FALSE),即

 public function max_number($num, $val) {
    if($num > $val){
        $this->set_message("max_number", "The %s can not be greater then "  . $val);
        return false;
    }

    return true;
}

public function min_number($num, $val) {
    if($num < $val){
        $this->set_message("min_number", "The %s can not be smaller then "  . $num);
        return false;
    }

    return true;
}

希望这有帮助!