через EditController Я позволяю пользователю изменять свой элемент. то я хочу обработать процедуру обновления в другом контроллере (UpdateController). Но это не работает! Он создает новый элемент вместо обновления элемента. В UpdateController я использовал dd (...). Я обнаружил, что Id и Profile не перенаправляются в UpdateController. Надеюсь, вы поможете мне с этим.
/**
* @IsGranted("ROLE_USER")
* Class EditController
* @package App\Controller
*/
final class EditController extends AbstractController
{
/**
* @Route("/item/edit/{items}", name="edit_item")
*
* @param Items $items
* @return Response
*/
public function edit(Items $items)
{
$form = $this->createForm(CreateTodoFormType::class, $items, ['action' => $this->generateUrl('update_item')]);
return $this->render('item/edit.html.twig', [
'todoForm' => $form->createView(),
'viewData' => $form->getViewData()
]);
}
}
Это UpdateController
/**
* @IsGranted("ROLE_USER")
* Class UpdateController
* @package App\Controller\Item
*/
final class UpdateController extends AbstractController
{
/**
* @Route("/item/update", name="update_item", methods={"POST"})
*/
public function update(EntityManagerInterface $em, Request $request, TranslatorInterface $translator)
{
$form = $this->createForm(CreateTodoFormType::class);
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
$item = $form->getData();
$profile = $em->getRepository(Profile::class)->findProfileById($this->getUser()->getId());
$item->setProfile($profile);
$em->persist($item);
$em->flush();
$this->addFlash('success', $translator->trans('The new ToDo is updated.'));
return $this->redirectToRoute('item');
}
return $this->render('item/edit.html.twig', [
'todoForm' => $form->createView(),
]);
}
}