Ich habe die folgende Galerie Einheitein Element Löschen von OneToMany Beziehung
class Gallery
{
/**
* @var integer
*
* @ORM\Column(name="id", type="integer")
* @ORM\Id
* @ORM\GeneratedValue(strategy="AUTO")
*/
private $id;
/**
* @var ArrayCollection
* @ORM\OneToMany(targetEntity="Tessa\GalleryBundle\Entity\Photo", mappedBy="gallery", cascade={"persist", "remove"})
*/
private $photos;
/* ... */
}
Diese gallery
mit einer manyToOne
Beziehung zu einer PointOfInterest
Einheit verbunden ist. Hier ist die Erklärung
class PointOfInterest
{
/* ... */
/**
* @ORM\ManyToOne(targetEntity="Tessa\GalleryBundle\Entity\Gallery", cascade={"persist", "remove"})
* @ORM\JoinColumn(nullable=false)
*/
private $gallery;
/* ... */
ich auch ein Formular verwenden, um die PointOfInterest
Entität zu aktualisieren. Hier ist die Form Erklärung
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('name', 'text')
->add('gallery', new GalleryType())
;
}
und die GalleryType
Erklärung.
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('photos', 'collection', array('type' => new PhotoType(),
'required' => false,
'allow_add' => true,
'allow_delete' => true,
'by_reference' => false
))
;
}
Wenn ich die PoI
bearbeite ich Fotos in die Galerie problemlos hinzufügen können, aber ich kann nichts löschen.
Ich habe versucht, Galerie PreUpdate
Haken, aber es wird nie aufgerufen. Ich druckte die Ausgabe in removePhotos
Methode Gallery
Einheit, und die Fotos werden aus der Galerie entfernt. Ich vermute dann, dass die Galerie niemals persistiert wird.
Hier ist der Code, wenn ich nach der Bearbeitung die PoI
beibehalten.
private function handleForm($elem, $is_new)
{
$form = $this->createForm(new CircuitType, $elem);
$request = $this->get('request');
if ($request->getMethod() == 'POST') {
$form->bind($request);
if ($form->isValid()) {
$em = $this->getDoctrine()->getManager();
$em->persist($elem);
$em->flush();
return $this->redirect($this->generateUrl('tessa_circuit_index'));
}
}
return $this->render('TessaUserBundle:Circuits:add.'.'html'.'.twig',
array(
'form' => $form->createView(),
'is_new' => $is_new,
));
}
Was ist der angezeigte Fehler? – Sybio
Es gibt keinen Fehler. Ich weiß einfach nicht, wie ich meinen Code bearbeiten soll, damit sich das so verhält, wie ich es möchte. – tomahh
Duplizieren: http://stackoverflow.com/questions/8923919/symfony2-form-collection-how-to-remove-entity-from-a-collection –