2017-01-10 1 views
0

私はNumberTypeを使用するSymfony 3.2フォームを持っています。私はこのフィールドを小数点以下の価格(車、不動産、つまりセントを使用しない価格)に使用します。NumberTypeの変更を誤って検出する

また、エンティティへの変更を検出して監査ログを書き込むpreUpdateリスナーもあります。フォームを提出するたびに、フォームフィールドに28000などの価格が28000.0として表示されますので、私のチェンジセットには違いが表示されます。

私はこれを取り除く方法を理解できません。フォームの型とEntity自体の両方に "scale"パラメータを0に設定していますが、これは小数点以下を削除すると考えられますが、そうではありません。

私はもともとTextTypeを使用していましたが、これはテキストフィールドとして扱うことで独自の問題を抱えていましたので、28000と28000を比較し、実際には変更しなかったものとして扱います。

アイデア?リスナーでチェンジの

Vardump:

"salePrice" => array:2 [▼ 
    0 => 32888 
    1 => 32888.0 
] 

エンティティ:

/** 
* @var integer 
* @Groups({"feed"}) 
* @ORM\Column(name="sale_price", type="integer", nullable=true) 
*/ 
private $salePrice; 

にformType:

->add('salePrice', NumberType::class, [ 
    'label' => 'Sale: $', 
    'required' => false, 
    'scale' => 0, 
    'attr' => ['class' => 'size-sm input-sm'], 
]) 
+0

このリンクはあなたを助けます:https://github.com/doctrine/doctrine2/issues/5594 –

答えて

0

があなたの代わりにIntegerType Fieldを試してみました:

->add('salePrice', IntegerType::class, [ 
    'label' => 'Sale: $', 
    'required' => false, 
    'attr' => ['class' => 'size-sm input-sm'] 
]) 

これを試してよりうまく動作するかどうかを確認してください。 NumberTypeは非整数用です。

関連する問題