2013-07-17 5 views
1

У меня есть несколько встроенных форм.Сравнивать данные после запроса формы, встроенные формы

Моя первая форма содержит коллекцию статей:

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

И эта форма содержит коллекцию подстатей:

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

И в этом подстатей я хочу, чтобы изменить количество:

$builder->add('amount'); 

Моя цель - проверить, изменилась ли сумма в форме и установить измененный вал ue в моей сущности от 0 до 1 для этой суммы.

Каков наилучший способ сделать это?

Edit: Я использую 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. Так как я могу получить доступ к подтвержденному полю и установить его на ложь?

+0

Посмотрите [этот ответ] (http://stackoverflow.com/questions/10800178/how-to-check-if-entity-is-changed-in-doctrine-2) пожалуйста .. Вы можете идентифицировать измененные объекты, используя прослушиватель/подписчик доктрины. – nifr

+0

спасибо за вашу ссылку, я сейчас редактировал свой вопрос, как я могу получить доступ к подтвержденному полю, которое находится в одном и том же объекте, но не используется в форме – ChrisS

ответ

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); 

     } 
    } 
}