Yii 如何在验证/保存之前更正用户输入?

Yii 如何在验证/保存之前更正用户输入?,yii,Yii,在我的表单中有一个价格字段,它将以十进制格式保存到db中 现在,如果用户键入逗号“,”而不是“”,我如何悄悄地替换它以便正确保存?例如,将保存12.34,而不是12.34,而不是12.00,如果在验证发生时使用a将输入从字符串自动转换为浮点值,可能最简单;其余的应该自己照顾自己 所以你的模型会 public function rules() { return array( array('price', 'filter', 'filter' => 'convertTo

在我的表单中有一个价格字段,它将以十进制格式保存到db中


现在,如果用户键入逗号“”而不是“”,我如何悄悄地替换它以便正确保存?例如,将保存
12.34
,而不是
12.34
,而不是
12.00

,如果在验证发生时使用a将输入从字符串自动转换为浮点值,可能最简单;其余的应该自己照顾自己

所以你的模型会

public function rules() {
    return array(
        array('price', 'filter', 'filter' => 'convertToFloat'),
    );
}
过滤函数应该是这样的

function convertToFloat($value) {
    return floatval(trim(str_replace(',', '.', $value)));
}
您还可以将筛选函数指定为任何有效函数,例如,将其设为模型方法并将其指定为

'filter' => array($this, 'convertToFloat')

您可能会看到-CHtml#activenumberfiedgood提示,虽然这次我的客户希望让用户以任何形式输入,并在需要时通过软件进行更正,但当我将函数放入模型并使用
'filter'=>数组($this,'convertToFloat')
时,它起到了作用。我还没有找到把convertToFloat函数放在哪里,这样它就可以在每个模型中工作。@zuups.com:你可以把它放在
index.php
中。您没有从我这里听说过,但它是有效的。@zuups.com您可以在父ActiveRecord类中编写
convertToFloat
函数,但最好编写一个单独的验证程序类,如下所述: