adminUrlGenerator = $adminUrlGenerator; $this->fileUploader = $fu; } #[Route('/admin/photos', name: 'admin_photos')] public function index(): Response { $fileData = []; $dir = $this->fileUploader->getTargetDirectory(); $pathPackage = new PathPackage($dir, new EmptyVersionStrategy()); foreach (glob($dir . '*.*') as $file) { $filename = basename($file); $fileData[] = [ "filename" => $filename, "url" => $pathPackage->getUrl($filename), ]; } //return new JsonResponse(["dir" => $dir, "response" => $fileData]); return $this->render('admin/photo_manager/index.html.twig', [ 'photoList' => $fileData, ]); } #[Route('/admin/photos/upload', name: 'admin_photos_upload')] public function uploadPhoto( Request $request ): Response { $form = $this->createFormBuilder() ->add('file', FileType::class, [ 'mapped' => false, 'required' => false, 'constraints' => [ new File([ 'maxSize' => '2048k', 'mimeTypes' => [ 'image/jpeg', 'image/png', 'image/svg+xml', 'image/webp', ], 'mimeTypesMessage' => 'Please upload a valid image!', ]) ], ]) ->add('submit', SubmitType::class) ->getForm(); $form->handleRequest($request); if ($form->isSubmitted() && $form->isValid()) { /** @var UploadedFile $uploadedPhoto */ $uploadedPhoto = $form->get('file')->getData(); if ($uploadedPhoto) { $filename = $this->fileUploader->upload($uploadedPhoto); } $url = $this->adminUrlGenerator->setRoute('admin_photos')->generateUrl(); return $this->redirect($url); } return $this->render('admin/adminEdit.html.twig', [ 'form' => $form, 'ElementName' => "Photo", 'ElementType' => "New Photo", ]); } #[Route('/admin/photos/remove/{filename}', name: 'admin_photos_remove')] public function remove(string $filename): Response { $filePath = $this->fileUploader->getTargetDirectory() . $filename; $deleted = $this->fileUploader->deleteFile($filePath); if (!$deleted) { throw new HttpException("404", "File can't be deleted"); } $url = $this->adminUrlGenerator->setRoute('admin_photos')->generateUrl(); return $this->redirect($url); } }