5

次のような小数フィールドを持つアプリケーションがあります。

/**
 * @var decimal $amount
 *
 * @ORM\Column(name="amount", type="decimal", scale="2")
 */
private $amount;

フォームが「3,4」や「3.4」などの形式の数値を受け入れるようにしたい。

「3.4」と入力すると、アプリケーションはデータベース「3.4」に保存され、「3,4」と入力すると、アプリケーションはデータベース「34」に保存されます (はい、コンマも検証エラーも表示されません!)。

(これは symfony の既知のバグです: https://github.com/symfony/symfony/issues/2059 )

では、小数点だけでなくコンマを含む数値を受け入れるにはどうすればよいですか?

(DataTrasformer でカンマをドットに置き換えようとしましたが、DataTransformer は既に正規化された数値を取ります。)

4

2 に答える 2

5

appendClientTransformer で DataTransformer を使用する回避策を見つけました。ここにスニペットがあります: https://gist.github.com/3394880

于 2012-08-19T13:48:56.080 に答える
3

私は同じ問題を抱えていたので、ロケールフォーマッターなしで独自の数値フィールドを作成することにしました。これは私が思いついたトランスです: https://gist.github.com/3411067

注: 私がしなければならなかったことの 1 つは、検証を正しく行うためにTransformationFailedExceptionをスローすることです。

于 2012-08-21T03:23:58.163 に答える