Entities passed to the choice field must be managed

October 4, 2011
By

Symfony delle volte riesce ad essere snervante
Ho appena perso un bel po’ di tempo per risolvere questa eccezione
Sostanzialmente ho creato una classe Tag che ha una proprietà $parentTag che è sempre un’istanza di Tag, punta alla colonna id della stessa tabella e così via
Tutto mappato su Doctrine tramite annotazioni

Ho sistemato il form e tutto viene renderizzato bene, le nuove entità vengono create.
Il problema era nell’edit e update. Continuava a saltare fuori l’errore di cui sopra, ma solo per quelle che avevano la proprietà popolata

Ho aggiunto questo snippet prima che il form venga passato al vaglio nei metodi update e edit del controller

....
        if (!$entity) {
            throw $this->createNotFoundException('Unable to find Tag entity.');
        }
        if($entity->getParentTag()!=null){
        $m = $em->merge($entity->getParentTag());
        $entity->setParentTag($m);
        $entity = $em->merge($entity);
        }
....

e questo ha risolto il problema
One more down, on with the war ….

Grazie a Marco Pivetta per avermi messo sulla giusta strada con una sua risposta nel gruppo di symfony

Tags: , ,

One Response to Entities passed to the choice field must be managed

  1. Ho avuto gli stessi problemi con form multi-step (maledetti!)… Purtroppo non è il caso in cui si userebbe un ORM 🙁
    E’ un bel disastro serializzare/deserializzare tutti quei dati…
    Non ho ancora trovato una soluzione “comoda” al problema, ma prima o poi ci arriverò 🙂
    Attualmente il modo migliore resta il salvare semplicemente gli identifier e ri-costruire l’intero albero di entità ad ogni chiamata, ma è decisamente scomodo, anche se molto sicuro…
    Considera comunque che io, oltre a $em->merge($entity); utilizzo anche un $em->refresh($entity) per essere sicuro al 100% di non avere dati de-serializzati che possano sovrascrivere roba importante nelle entità…

Leave a Reply

Your email address will not be published. Required fields are marked *

ERROR: si-captcha.php plugin says GD image support not detected in PHP!

Contact your web host and ask them why GD image support is not enabled for PHP.

ERROR: si-captcha.php plugin says imagepng function not detected in PHP!

Contact your web host and ask them why imagepng function is not enabled for PHP.