【发布时间】:2017-02-15 20:07:30
【问题描述】:
我有这个自定义验证规则来验证大于零的钱。
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' );
并尝试将值设置回来,当它在这样的表单上出现错误时,但始终返回 NULL,尽管设置了 $_POST。
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 的事实。该错误与这些变量无关。
另一个有趣的事实是,我有另一个可以使用自定义验证的字段,但不是数组。
【问题讨论】:
标签: php codeigniter codeigniter-3