src/Controller/ProjetsController.php line 81
<?phpnamespace App\Controller;use App\Entity\Projets;use App\Form\ProjetsType;use App\Entity\Commentaires;use App\Entity\ImageSlider;use App\Form\CommentairesType;use App\Repository\ProjetsRepository;use Doctrine\ORM\EntityManagerInterface;use App\Repository\UserProjetsRepository;use Doctrine\ORM\EntityManager;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\String\Slugger\SluggerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\File\Exception\FileException;use Symfony\Component\Security\Core\Authentication\Token\Storage\TokenStorageInterface;use Sensio\Bundle\FrameworkExtraBundle\Configuration\IsGranted;use Sensio\Bundle\FrameworkExtraBundle\Configuration\Security;#[Route('/projets')]class ProjetsController extends AbstractController{#[Route('/', name: 'app_projets_index', methods: ['GET'])]public function index(ProjetsRepository $projetsRepository): Response{return $this->render('projets/index.html.twig', ['projectsJs' => $projetsRepository->renderForJs(),]);}#[Route('/new', name: 'app_projets_new', methods: ['GET', 'POST'])]public function new(Request $request, EntityManagerInterface $entityManager, SluggerInterface $slugger): Response{$projet = new Projets();$form = $this->createForm(ProjetsType::class, $projet);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {$uploadedFiles = $request->files->all();foreach ($uploadedFiles as $uploadedFile) {if ($uploadedFile) {$destination = $this->getParameter('kernel.project_dir') . '/public/uploads/SliderImages';// Générer un nom de fichier unique$newFilename = uniqid() . '.' . $uploadedFile->guessExtension();// Déplacer le fichier vers le dossier de destination$uploadedFile->move($destination,$newFilename);// Créez une nouvelle instance de ImageSlider et définissez le chemin$imageSlider = new ImageSlider();$imageSlider->setUrl($newFilename);$imageSlider->setProjet($projet);$projet->addImageSlider($imageSlider);$entityManager->persist($imageSlider);$entityManager->persist($projet);}}$entityManager->persist($projet);$entityManager->flush();return $this->redirectToRoute('app_user_projets_index', [], Response::HTTP_SEE_OTHER);}return $this->render('projets/new.html.twig', ['projet' => $projet,'form' => $form,]);}#[Route('/{id}', name: 'app_projets_show', methods: ['GET', 'POST'])]public function show(Request $request, Projets $projet, TokenStorageInterface $tokenStorage, UserProjetsRepository $userProjetsRepository): Response{$commentaire = new Commentaires();$form = $this->createForm(CommentairesType::class, $commentaire);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {dd('test');}$token = $tokenStorage->getToken();if ($token) {$user = $token->getUser();} else {$user = null;}$userHasProject = false;$userFinishedProject = false;$allProjects = $userProjetsRepository->findBy(['projet' => $projet]);// dd($allProjects);if ($token && $user = $token->getUser()) {$userHasProject = $userProjetsRepository->findOneBy(['user' => $user, 'projet' => $projet]);if ($userHasProject) {$userFinishedProject = $userHasProject->isCompleted();}}// dd($user->getUserProjets());return $this->render('projets/show.html.twig', ['projet' => $projet,'user' => $user,'allProjects' => $allProjects,'userFinishedProject' => $userFinishedProject,'userProject' => $userHasProject,'form' => $form,]);}#[Security("is_granted('ROLE_ADMIN')")]#[Route('/{id}/edit', name: 'app_projets_edit', methods: ['GET', 'POST'])]public function edit(Request $request, Projets $projet, EntityManagerInterface $entityManager, SluggerInterface $slugger): Response{$form = $this->createForm(ProjetsType::class, $projet);$form->handleRequest($request);if ($form->isSubmitted() && $form->isValid()) {// dd($request);$uploadedFiles = $request->files->all();foreach ($uploadedFiles as $uploadedFile) {if ($uploadedFile) {$destination = $this->getParameter('kernel.project_dir') . '/public/uploads/SliderImages';// Générer un nom de fichier unique$newFilename = uniqid() . '.' . $uploadedFile->guessExtension();// Déplacer le fichier vers le dossier de destination$uploadedFile->move($destination,$newFilename);// Créez une nouvelle instance de ImageSlider et définissez le chemin$imageSlider = new ImageSlider();$imageSlider->setUrl($newFilename);$imageSlider->setProjet($projet);$projet->addImageSlider($imageSlider);$entityManager->persist($imageSlider);$entityManager->persist($projet);}}$entityManager->flush();return $this->redirectToRoute('app_projets_edit', ["id" => $projet->getId()], Response::HTTP_SEE_OTHER);}return $this->render('projets/edit.html.twig', ['projet' => $projet,'form' => $form,]);}#[Security("is_granted('ROLE_ADMIN')")]#[Route('/{id}', name: 'app_projets_delete', methods: ['POST', 'GET'])]public function delete(Request $request, Projets $projet, EntityManagerInterface $entityManager): Response{if ($this->isCsrfTokenValid('delete' . $projet->getId(), $request->request->get('_token'))) {$entityManager->remove($projet);$entityManager->flush();}return $this->redirectToRoute('app_projets_index', [], Response::HTTP_SEE_OTHER);}#[Security("is_granted('ROLE_ADMIN')")]#[Route('/{id}/del', name: 'app_projets_delete_get', methods: ['GET'])]public function deleteByJsx($id, ProjetsRepository $projetsRepository, EntityManagerInterface $entityManager): Response{$project = $projetsRepository->find($id);if ($project) {$entityManager->remove($project);$entityManager->flush();}return $this->redirectToRoute('app_projets_index', [], Response::HTTP_SEE_OTHER);}#[Route('/image/{id}', name: 'app_projets_slider', methods: ['GET', 'POST'])]public function newImgSlider(Request $request, Projets $projet, ProjetsRepository $projetsRepository, EntityManagerInterface $entityManager): Response{if ($request->isMethod('POST')) {// dd($request);$uploadedFiles = $request->files->all();foreach ($uploadedFiles as $uploadedFile) {if ($uploadedFile) {$destination = $this->getParameter('kernel.project_dir') . '/public/uploads/SliderImages';// Générer un nom de fichier unique$newFilename = uniqid() . '.' . $uploadedFile->guessExtension();// Déplacer le fichier vers le dossier de destination$uploadedFile->move($destination,$newFilename);// Créez une nouvelle instance de ImageSlider et définissez le chemin$imageSlider = new ImageSlider();$imageSlider->setUrl($newFilename);$imageSlider->setProjet($projet);// Liez cette instance à votre projet$projet->addImageSlider($imageSlider);// Persistez les changements dans la base de données$entityManager->persist($imageSlider);}}$entityManager->flush();}$jsonProject = $projetsRepository->renderForJs();// Si c'est une requête GET, affichez le formulairereturn $this->render('/projets/editImage.html.twig', ['projet' => $projet,'jsonProject' => $jsonProject,// Vos variables passées au template, si nécessaire]);}}