3

我的表单中有一个价格字段,它将以十进制格式保存到数据库中。

现在,如果用户键入逗号' '不是点' ',我怎样才能悄悄地替换它,以便正确保存?例如,而不是12,34,将被保存12.34,而不是12.00

4

1 回答 1

8

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

所以你的模型会有

public function rules() {
    return array(
        array('price', 'filter', 'filter' => 'convertToFloat'),
    );
}

过滤功能类似于

function convertToFloat($value) {
    return floatval(trim(str_replace(',', '.', $value)));
}

您还可以将过滤函数指定为任何有效的可调用函数,例如使其成为模型方法并将其指定为

'filter' => array($this, 'convertToFloat')
于 2013-01-23T10:38:27.613 回答