Symfony2 form-Sammlung: Wie zu entfernen Entität aus einer Sammlung?
Ich versuche zum entfernen von Entitäten aus einer Sammlung, aber es funktioniert nicht.
Ich glaube, ich habe irgendwo einen Fehler, aber ich weiß nicht wo.
Hier der code aus meiner updateAction
:
$em = $this->getDoctrine()->getEntityManager();
$entity = new Person();
if (!$entity) {
throw $this->createNotFoundException('Unable to find Person entity.');
}
$editForm = $this->createForm(new PersonType(), $entity);
$deleteForm = $this->createDeleteForm($id);
$request = $this->getRequest();
$editForm->bindRequest($request);
if ($editForm->isValid()) {
$entity = $editForm->getData();
$em->persist($entity);
foreach($entity->getAddresses() as $address)
{
$em->persist($address);
}
$em->flush();
return $this->redirect($this->generateUrl('person_show', array('id' => $id)));
}
return $this->render('AppPersonBundle:Person:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
);
Beachten Sie, dass zu entfernen, meine Person ich Entferne das div aus dem html.
Ich meine ich entfernen <div id="myapp_personbundle_persontype_address_4">
zum Beispiel.
Ist es der richtige Weg ist?
InformationsquelleAutor Sam | 2012-01-19
Du musst angemeldet sein, um einen Kommentar abzugeben.
Für jetzt, ich weiß :
Und ich hoffe eine Lösung wird gefunden werden, der eines Tages mit https://github.com/symfony/symfony/issues/1540, aber es langsam zu finden.
Nicht nativ, sondern mit Hilfe der API (doctrine-project.org/api/common/2.1/doctrine/common/collections/...) sollten Sie Erfolg haben
Recht ok... vielen Dank für alle Sam
+1. Danke @webda2l. Eigentlich habe ich immer noch das gleiche... haben Sie irgendwelche Neuigkeiten dazu? Gibt es einen besseren Weg, dies zu tun?
Ich auch weiterhin tun, einen ähnlichen code, der nur für meine OneToMany-Beziehungen. Siehe symfony.com/doc/current/cookbook/form/...
InformationsquelleAutor webda2l
Dank diese Antwort, ich fand eine bessere Lösung. Sie können Die Lehrmeinung orphan removal feature:
orphanRemoval
ist der Schlüssel. Und vergessen Sie nicht, das zulassen von null-Kind-settersetGallery(Photo $photo = null)
InformationsquelleAutor Stephan Vierkant
Kollektion Form in symfony2 ist sehr einfach, es macht fast die ganze Arbeit für Sie. Im Grunde müssen Sie nur fügen Sie eine
collection type
- und set -allow_add
,allow_delete
Fahnen und fügen Sie einen kleinen JavaScript-code. Haben Sie einen Blick auf die Kochbuch-Beispielallow_delete
nichtallow_remove
Das ist, warum gibt es eine Schaltfläche "Bearbeiten" auf SO 😉
InformationsquelleAutor Amadu Bah
Ich bin mit dieser Lösung...
In den controler:
In der Entität:
Es für mich funktioniert, und es zeigt weniger code, und ich glaube nicht, verwenden Sie das orphanRemoval Funktion.
InformationsquelleAutor Victor Salvans Montesó