Есть два роута:
/**
* @Route("/create", name="create")
*/
public function createAction(Request $request) {
$post = new Post();
$form = $this->createForm(PostType::class, $post);
if ($request->isMethod($request::METHOD_POST)) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
$file = $post->getImage();
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getParameter('images_directory'), $fileName);
$post->setImage($fileName);
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('ImagenariumBundle:Post:create.html.twig', ['form' => $form->createView(),]);
}
и
/**
* @Route("/{id}/edit", requirements={"id": "[1-9]\d*"}, name="edit")
*/
public function editAction(Request $request, Post $post) {
$form = $this->createForm(PostType::class, $post);
if ($request->isMethod($request::METHOD_POST)) {
$form->handleRequest($request);
if ($form->isSubmitted() && $form->isValid()) {
/** @var Symfony\Component\HttpFoundation\File\UploadedFile $file */
$file = $post->getImage();
$fileName = md5(uniqid()).'.'.$file->guessExtension();
$file->move($this->getParameter('images_directory'), $fileName);
$post->setImage($fileName);
$em = $this->getDoctrine()->getManager();
$em->persist($post);
$em->flush();
return $this->redirect($this->generateUrl('home'));
}
}
return $this->render('ImagenariumBundle:Post:edit.html.twig', ['form' => $form->createView(),]);
}
По сути, у них отличаются только две строчки. Как написать их красиво (я только начал с Symfony)? Пока кроме switch по имени роута ничего в голову не приходит.