2014-07-25 141 views
0

這是我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; 
    } 
} 

然後在控制器我設置的規則是這樣,例如「編號」字段:

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

例如56遍但也1903.

但如果num字段是0它的作品。

所以,這隻適用於min_num,但不適用於max_num。

我在做什麼錯在這裏?

回答

1

笨已經爲這個內置的功能,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; 
} 

希望這可以幫助!