Changeset错误地检测NumberType上的更改

时间:2017-01-10 17:02:29

标签: forms symfony

我有一个使用NumberType的Symfony 3.2表单。我使用这个字段的价格没有小数(汽车,房地产,即我们不用美分的价格)。

我还有一个preUpdate侦听器,它检测实体的更改以编写审核日志。每当提交表单时,表单字段中的28000等价格将显示为28000.0,因此会显示差异,出现在我的变更集中。

我无法弄清楚如何摆脱这个。我有"规模"表单类型和实体本身的参数设置为0,我认为这将消除任何小数,但它不会。

我最初只是使用TextType但是它有自己的问题,将其视为文本字段,因此它将28000与#34; 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'],
])

1 个答案:

答案 0 :(得分:0)

您是否尝试过IntegerType Field

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

你可以尝试一下,看看它是否效果更好。 NumberType适用于非整数。