我的表单中有一个价格字段,将以十进制格式保存到db中。
现在,如果用户输入逗号“,”而不是“。”,我怎样才能安静地替换它以便正确保存?例如,而不是12,34
,将保存12.34
,而不是12.00
答案 0 :(得分:8)
如果在验证发生时使用CFilterValidator
将字符串中的输入自动转换为浮点值,这可能是最简单的;其余的应该照顾好自己。
所以你的模型会有
public function rules() {
return array(
array('price', 'filter', 'filter' => 'convertToFloat'),
);
}
并且过滤功能类似于
function convertToFloat($value) {
return floatval(trim(str_replace(',', '.', $value)));
}
您还可以将过滤功能指定为任何有效的callable,例如将其设为模型方法并将其指定为
'filter' => array($this, 'convertToFloat')