* Create action. * * @param \Symfony\Component\HttpFoundation\Request $request HTTP request * @param \App\Repository\SeedRepository $seedRepository Seed repository * * @param SluggerInterface $slugger * @param FileUploader $fileUploader * @return \Symfony\Component\HttpFoundation\Response HTTP response * * @throws \Doctrine\ORM\ORMException * @throws \Doctrine\ORM\OptimisticLockException * @Route( * "/create", * methods={"GET", "POST"}, * name="create", * ) */ public function create(Request $request, SluggerInterface $slugger, FileUploader $fileUploader): Response { $seed = new Seed(); $form = $this->createForm(SeedType::class, $seed); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { $seed->setCreatedAt(new \DateTime()); /** @var UploadedFile $photoFile */ $photoFile = $form->get('photo')->getData(); if ($photoFile) { $photoFileName = $fileUploader->upload($photoFile); $seed->setPhotoFilename($photoFileName); } if ($photoFile) { $originalFilename = pathinfo($photoFile->getClientOriginalName(), PATHINFO_FILENAME); // this is needed to safely include the file name as part of the URL $safeFilename = $slugger->slug($originalFilename); $newFilename = $safeFilename . '-' . uniqid() . '.' . $photoFile->guessExtension(); try { $photoFile->move( $this->getParameter('photos_directory'), $newFilename ); } catch (FileException $e) { // ... handle exception if something happens during file upload } $seed->setPhotoFilename($newFilename); $seedRepository->save($seed); $this->addFlash('success', 'message.created_successfully_seed'); return $this->redirectToRoute('index'); } }