在表单请求,嵌入表单之后比较数据

时间:2013-07-17 11:36:14

标签: forms symfony symfony-2.2

我有一个多重嵌入表格。

我的第一个表格包含一系列文章:

$builder->add('purchaseOrders', 'collection', array('type' => new AmountOrderArticleType()));

此表单包含子集的集合:

$builder->add('articleOrderReferences', 'collection', array('type' => new AmountOrderSubArticleType()));

在这篇Subarticles中我想编辑金额:

$builder->add('amount');

我的目标是检查表单中的金额是否已更改,并将此实体中的更改值从0设置为1。

最好的方法是什么?

编辑: 我现在使用preUpdate Eventlistener:

  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 "Acme\AppBundle\Entity\AOSupplierReference" in PreUpdateEventArgs. 那么如何才能访问已确认的字段并将其设置为false?

1 个答案:

答案 0 :(得分:1)

好的,用Eventlistener修复它,感谢nifr提示。

public function preUpdate(LifecycleEventArgs $eventArgs)
{   
    $entity = $eventArgs->getEntity();
    $em = $eventArgs->getEntityManager();

    if ($entity instanceof AOSupplierReference) {
        if ($eventArgs->hasChangedField('amount')) {

            $entity->setConfirmed(false);

        }
    }
}