我有这个自定义验证规则来验证大于零的金额。
public function greater_than_zero_money($value)
{
$value = str_replace(',', '', $value);
$value = str_replace('.', '', $value);
if ( empty($value) || floatval($value) <= 0 ){
$this->form_validation->set_message('greater_than_zero_money', 'The {field} field must be greater than zero.');
return false;
}
}
我以这种方式设置自定义验证规则
$this->form_validation->set_rules ( "vl_expense[$k]" , 'Expense Value' , 'callback_greater_than_zero_money' );
然后尝试将值设置回来,当它在这样的形式上出错时,但是在设置$ _POST时总是返回NULL。
set_value("vl_expense[{$e['cd_type_expense']}]")==NULL
$_POST["vl_expense"][$e['cd_type_expense']]==LAST VALUE FROM FORM
如果我更改了TRIM(或其他内置验证)的验证规则,我会得到值。
$this->form_validation->set_rules ( "vl_expense[$k]" , 'Expense Value' , 'trim' );
我也尝试混合trim和callback_greater_than_zero_money,但没有成功。
请忽略这里没有提到变量$ k和$ e的事实。该错误与这些变量无关。
另一个有趣的事实是,我有另一个自定义验证字段,但不是数组。
答案 0 :(得分:0)
你的代码辍学了。您需要返回验证值...
public function greater_than_zero_money($value)
{
$value = str_replace(',', '', $value);
$value = str_replace('.', '', $value);
if ( empty($value) || floatval($value) <= 0 ){
$this->form_validation->set_message('greater_than_zero_money', 'The {field} field must be greater than zero.');
return false;
}
return $value;
}