2012-08-02 27 views
0

我想檢查我的水合實體在持續之前的更改。Symfony2 Form處理程序檢查更改之前持續

我試過用DB查找一個新的實體到onSuccess(bindRequest之後),但是這個對象有水合值而不是DB值!

這就是我tryed:

public function onSuccess(TachesDetails $detail) { 
    $tache_new = $detail->getTache(); 
    $tache_old = $this->em->getRepository('NomDuBundle:Taches')->find($tache_new->getId()); 
    var_dump($tache_old); 
    // ... 
    $this->em->persist($detail); 
    $this->em->persist($detail->getTache()); 
    $this->em->flush(); 
} 

的$的var_dump tache_old給我水合值。

編輯:

我已經找小時後的解決方案。

要解決此問題,您必須在控制器中創建實體的克隆,並通過formHandler參數發送它。

在的onSuccess功能,可以像這樣訪問:

所有的
$this->entityCloned 
+4

你應該更好地回答自己的問題,然後接受它,而不是發佈您的問題內部解決方案。 – j0k 2012-08-02 13:03:08

回答

1

首先,你可以使用prePersist event檢查發生了什麼變化。這比onSuccess更合適。

還有更多本土的檢查方法的改變,使用UnitOfWork object

$unitOfWork = $entityManager->getUnitOfWork(); 
$unitOfWork->computeChangeSets(); 
$changes = $unitOfWork->getEntityChangeSet($yourEntity);