Это метод, который я использовал:
Код: Выделить всё
$entity = $em->getRepository('MyBundle:MyEntity')->find($id);
foreach ($entity->getAssociation() as $value) {
$entity->removeAssociation($value);
}
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
if ($editForm->isValid()) {
foreach ($entity->getAssociation() as $value) {
$entity->addAssociation($value);
}
$em->flush();
}
Код: Выделить всё
public function updateCollection(&$newEntity, $newCollection, $oldCollection, $contains, $add, $remove) {
foreach ($oldCollection as $value) {
$item = call_user_func(array($newCollection, $contains), $value);
if(!$item){
call_user_func( array($newEntity, $remove), $value );
}
}
foreach ($newCollection as $value) {
$item = call_user_func(array($oldCollection, $contains), $value );
if(!$item){
call_user_func( array($newEntity, $add), $value );
}
}
}
Код: Выделить всё
$oldAssociation = clone $entity->getAssociation();
$editForm = $this->createEditForm($entity);
$editForm->handleRequest($request);
if ($editForm->isValid()) {
$this->get('service_update')->updateCollection(
$entity,
$entity->getAssociation(),
$oldAssociation,
'contains',
'addAssociation',
'removeAssociation'
);
$em->flush();
}
Спасибо и извините за мой плохой английский
Подробнее здесь: https://stackoverflow.com/questions/416 ... ymfony-2-7
Мобильная версия