私のフォームには、10 進数形式で db に保存される価格のフィールドがあります。
ここで、ユーザーがコンマを入力すると、' , ' ポイントではありません。'、正しく保存されるように静かに置き換えるにはどうすればよいですか? たとえば の代わりに12,34
、保存されますが、保存され12.34
ません12.00
私のフォームには、10 進数形式で db に保存される価格のフィールドがあります。
ここで、ユーザーがコンマを入力すると、' , ' ポイントではありません。'、正しく保存されるように静かに置き換えるにはどうすればよいですか? たとえば の代わりに12,34
、保存されますが、保存され12.34
ません12.00
CFilterValidator
検証が行われたときに入力を文字列から浮動小数点値に自動的に変換するためにa を使用すると、おそらく最も簡単でしょう。残りは自分で処理する必要があります。
したがって、あなたのモデルは
public function rules() {
return array(
array('price', 'filter', 'filter' => 'convertToFloat'),
);
}
フィルタリング機能は次のようになります
function convertToFloat($value) {
return floatval(trim(str_replace(',', '.', $value)));
}
フィルタリング関数を任意の有効なcallableとして指定することもできます。たとえば、モデル メソッドにして、次のように指定します。
'filter' => array($this, 'convertToFloat')