I have got a problem with embedded Forms in Symfony2 Doctrine2.
Adding forms and records works fine, but removing does not work.
I used this tutorial: http://symfony.com/doc/current/cookbook ... tions.html --> allowing tags to be removed
Error is --> Fatal error: Call to undefined method Xxx\XxxxBundle\Entity\Aktionen::removeElement() in ...
PLEASE HELP!!!!!
My DB:
- Code: Select all
\Entity\Aktionen:
type: entity
table: aktionen
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
name:
type: string
length: 255
begin:
type: datetime
end:
type: datetime
edittime:
type: integer
oneToMany:
aktionen_produkte:
targetEntity: AktionenProdukte
mappedBy: aktion
cascade: ["remove", "persist"]
lifecycleCallbacks: { }
\Entity\AktionenProdukte:
type: entity
table: aktionen_produkte
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
manyToOne:
aktion:
targetEntity: Aktionen
inversedBy: aktionen_produkte
joinColumn:
name: aktion_id
referencedColumnName: id
onDelete: CASCADE
onUpdate: CASCADE
produkt:
targetEntity: Produkte
inversedBy: aktionen_produkte
joinColumn:
name: produkt_id
referencedColumnName: id
onDelete: CASCADE
onUpdate: CASCADE
verkaufskategorie:
targetEntity: Verkaufskategorien
inversedBy: aktionen_produkte
joinColumn:
name: verkaufskategorie_id
referencedColumnName: id
onDelete: CASCADE
onUpdate: CASCADE
lifecycleCallbacks: { }
\Entity\Produkte:
type: entity
table: produkte
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
kuerzel:
type: string
length: 255
name:
type: string
length: 255
manyToOne:
produktlinie:
targetEntity: Produktlinien
mappedBy: produktlinie_id
referencedColumnName: id
produktkategorie:
targetEntity: Produktkategorien
mappedBy: produktkategorie_id
referencedColumnName: id
oneToMany:
aktionen_produkte:
targetEntity: AktionenProdukte
mappedBy: produkt
lifecycleCallbacks: { }
\Entity\Verkaufskategorien:
type: entity
table: verkaufskategorien
fields:
id:
type: integer
id: true
generator:
strategy: AUTO
name:
type: string
length: 255
oneToMany:
aktionen_produkte:
targetEntity: AktionenProdukte
mappedBy: verkaufskategorie
lifecycleCallbacks: { }
My editAction in "AktionenController" looks like this:
- Code: Select all
public function editAction($id, Request $request)
{
$em = $this->getDoctrine()->getEntityManager();
$entity = $em->getRepository('XxxXxxxBundle:Aktionen')->find($id);
if (!$entity) {
throw $this->createNotFoundException('Unable to find Aktionen entity.');
}
$request = $this->getRequest();
$editForm = $this->createForm(new AktionenType(), $entity);
$deleteForm = $this->createDeleteForm($id);
// Create an array of the current Tag objects in the database
foreach ($entity->getAktionenProdukte() as $tag) $originalTags[] = $tag;
$editForm = $this->createForm(new AktionenType(), $task);
foreach ($entity->getAktionenProdukte() as $tag) {
foreach ($originalTags as $key => $toDel) {
if ($toDel->getAktion() === $tag->getId()) {
unset($originalTags[$key]);
}
}
}
// remove the relationship between the tag and the Task
foreach ($originalTags as $tag) {
// remove the Task from the Tag
$tag->getAktion()->removeElement($entity);
// if it were a ManyToOne relationship, remove the relationship like this
// $tag->setTask(null);
$em->persist($tag);
// if you wanted to delete the Tag entirely, you can also do that
// $em->remove($tag);
}
$em->persist($entity);
$em->flush();
// redirect back to some edit page
return $this->redirect($this->generateUrl('we_aktionen_edit', array('id' => $id)));
return $this->render('XxxXxxxBundle:Aktionen:edit.html.twig', array(
'entity' => $entity,
'edit_form' => $editForm->createView(),
'delete_form' => $deleteForm->createView(),
));
}
