这是我对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。
我在这里做错了什么?
答案 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;
}
希望这有帮助!