我有一个多个嵌入式Form.
我的第一张表格里有一系列文章:
$builder->add('purchaseOrders', 'collection', array('type' => new AmountOrderArticleType()));
这个表格包含一组亚粒子:
$builder->add('articleOrderReferences', 'collection', array('type' => new AmountOrderSubArticleType()));
在这个子条目中,我想编辑数量:
$builder->add('amount');
我的目标是检查表单中的金额是否发生了变化,并在我的实体中为此金额设置一个从0到1的变化值。
最好的方法是什么?
编辑:我现在使用预更新事件侦听器:
public function preUpdate(LifecycleEventArgs $eventArgs)
{
$entity = $eventArgs->getEntity();
$entityManager = $eventArgs->getEntityManager();
if ($entity instanceof AOSupplierReference) {
if ($eventArgs->hasChangedField('amount') && $eventArgs->getNewValue('amount') > 0) {
// $eventArgs->setConfirmed(0);
$eventArgs->setNewValue('confirmed', 0);
}
}
}
但我知道我收到了这个错误消息:Field "confirmed" is not a valid field of the entity "AcmeAppBundleEntityAOSupplierReference" in PreUpdateEventArgs.
那么,我如何访问已确认的字段并将其设置为false呢?
好吧,用Eventlistener修复了它,感谢nifr的提示。
public function preUpdate(LifecycleEventArgs $eventArgs)
{
$entity = $eventArgs->getEntity();
$em = $eventArgs->getEntityManager();
if ($entity instanceof AOSupplierReference) {
if ($eventArgs->hasChangedField('amount')) {
$entity->setConfirmed(false);
}
}
}