src/Controller/Admin/PageController.php line 148
<?phpnamespace App\Controller\Admin;use App\Entity\BlocAccordeon;use App\Entity\BlocColonne;use App\Entity\BlocDiaporama;use App\Entity\BlocTextImage;use App\Entity\Page;use App\Entity\Position;use App\Entity\User;use App\Repository\BlocAccordeonItemRepository;use App\Repository\BlocAccordeonRepository;use App\Repository\BlocColonneItemRepository;use App\Repository\BlocColonnePageRepository;use App\Repository\BlocColonneRepository;use App\Repository\BlocDiaporamaItemRepository;use App\Repository\BlocDiaporamaRepository;use App\Repository\BlocTextImageRepository;use App\Repository\MediaRepository;use App\Repository\PageRepository;use App\Repository\PoleRepository;use App\Services\Forms\PageFormService;use App\Services\Methods\Methods;use App\Services\User\UserPolesServices;use Doctrine\ORM\EntityManagerInterface;use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;use Symfony\Component\HttpFoundation\Request;use Symfony\Component\HttpFoundation\Response;use Symfony\Component\Routing\Annotation\Route;use Symfony\Component\String\Slugger\SluggerInterface;#[Route('/admin')]class PageController extends AbstractController{public function __construct(private pageFormService $pageFormService,private Methods $methods,private EntityManagerInterface $em,private UserPolesServices $userPolesServices) {}#[Route('/', name: 'app_page_index', methods: ['GET'])]public function index(PageRepository $pageRepository): Response{return $this->render('admin/post_type/page/index.html.twig');}#[Route('/pages', name: 'app_create_page_index', methods: ['GET'])]public function createPage(PageRepository $pageRepository): Response{/** @var User $user */$user = $this->getUser();$arrayPolesId = $this->userPolesServices->getPolesIdAsArray($user);$pages = $pageRepository->getPagesPerPolesUserPaginated($arrayPolesId);return $this->render('admin/post_type/page.html.twig', ['pages' => $pages,]);}#[Route('/pages/nouvelle', name: 'app_page_new', methods: ['GET', 'POST'])]public function new(Request $request,PageRepository $pageRepository,PoleRepository $poleRepository,): Response {$page = new Page();$blocColonne = new BlocColonne();$blocAccordeon = new BlocAccordeon();$blocDiaporama = new BlocDiaporama();$blocTextImage = new BlocTextImage();$this->pageFormService->initForms($request,$page,$pageForm,$blocColonne,$blocColonneForm,$blocAccordeon,$blocAccordeonForm,$blocTextImage,$blocTextImageForm,$blocDiaporama,$blocDiaporamaForm,$blocVideo,$blocVideoForm);if ($pageForm->isSubmitted() && $pageForm->isValid()) {$pageExist = $pageRepository->findOneBy(['titre' => $page->getTitre()]);if (null !== $pageExist) {$this->addFlash('danger', 'Une page existe déjà sous ce nom');}try {$this->pageFormService->pageForm($request, $poleRepository, $page, $pageRepository, true);} catch (\Exception $e) {$this->addFlash('danger', $e->getMessage());return $this->redirectToRoute('app_page_new');}return $this->redirectToRoute('app_page_edit', ['id' => $page->getId(), 'disabled' => 0], Response::HTTP_SEE_OTHER);}// Return arborescence pôle page$newTab = $this->methods->getTree();return $this->renderForm('admin/post_type/page/new.html.twig', ['page' => $page,'pageForm' => $pageForm,'blocColonnes' => $blocColonneForm,'blocAccordeon' => $blocAccordeonForm,'blocDiaporama' => $blocDiaporamaForm,'blocTextImage' => $blocTextImageForm,'poles' => $poleRepository->findAll(),'pages' => $newTab,'disabled' => 1,'blocColonnesPage' => null,'bloc_video' => $blocVideoForm,]);}#[Route('/pages/{id}/voir', name: 'app_page_show', methods: ['GET'])]public function show(Page $page): Response{if ($page->getSlug()) {return $this->redirectToRoute('page_front_slug',['slug' => $page->getSlug(),]);}return $this->redirectToRoute('page_front',['id' => $page->getId(),]);}#[Route('/pages/{id}/edition', name: 'app_page_edit', methods: ['GET', 'POST'])]public function edit(Request $request,Page $page,SluggerInterface $slugger,PageRepository $pageRepository,PoleRepository $poleRepository,BlocTextImageRepository $blocTextImageRepository,BlocColonneRepository $blocColonneRepository,BlocColonneItemRepository $blocColonneItemRepository,BlocColonnePageRepository $positionRepository,BlocDiaporamaRepository $blocDiaporamaRepository,MediaRepository $mediaRepository,BlocDiaporamaItemRepository $blocDiaporamaItemRepository,BlocAccordeonItemRepository $blocAccordeonItemRepository,BlocAccordeonRepository $blocAccordeonRepository,EntityManagerInterface $em): Response {$this->pageFormService->initForms($request,$page,$pageForm,$blocColonne,$blocColonneForm,$blocAccordeon,$blocAccordeonForm,$blocTextImage,$blocTextImageForm,$blocDiaporama,$blocDiaporamaForm,$blocVideo,$blocVideoForm);if ($pageForm->isSubmitted() && $pageForm->isValid()) {try {$this->pageFormService->pageForm($request, $poleRepository, $page, $pageRepository);} catch (\Exception $e) {$this->addFlash('danger', $e->getMessage());}return $this->redirectToRoute('app_page_edit', ['id' => $page->getId(), 'disabled' => 0], Response::HTTP_SEE_OTHER);}if ($blocColonneForm->isSubmitted() && $blocColonneForm->isValid()) {$this->em->flush();$position = new Position();$position->setColonneId($blocColonne);$position->setPageId($page);$count = \count($pageRepository->getAllBlocks($page->getId()));$position->setPosition($count + 1);$positionRepository->add($position, true);return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}if ($blocDiaporamaForm->isSubmitted() && $blocDiaporamaForm->isValid()) {$this->em->flush();$position = new Position();$position->setBlocDiaporama($blocDiaporama);$position->setPageId($page);$count = \count($pageRepository->getAllBlocks($page->getId()));$position->setPosition($count + 1);$positionRepository->add($position, true);return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}if ($blocAccordeonForm->isSubmitted() && $blocAccordeonForm->isValid()) {$this->em->flush();$position = new Position();$position->setBlocAccordeon($blocAccordeon);$position->setPageId($page);$count = \count($pageRepository->getAllBlocks($page->getId()));$position->setPosition($count + 1);$positionRepository->add($position, true);return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}if ($blocTextImageForm->isSubmitted() && $blocTextImageForm->isValid()) {if ('centre' !== $request->request->all()['bloc_text_image']['positionBlocTextImage'] && '' === $request->request->all()['bloc_text_image']['media']) {$this->addFlash('danger', 'Veuillez inserer une image ou selectionner l\'option "centré sans image"');return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}$this->em->flush();$position = new Position();$position->setTextImageId($blocTextImage);$position->setPageId($page);$count = \count($pageRepository->getAllBlocks($page->getId()));$position->setPosition($count + 1);$positionRepository->add($position, true);return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}if ($blocVideoForm->isSubmitted() && $blocVideoForm->isValid()) {$this->em->flush();$position = new Position();$position->setBlocVideo($blocVideo);$position->setPageId($page);$count = \count($pageRepository->getAllBlocks($page->getId()));$position->setPosition($count + 1);$positionRepository->add($position, true);return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}// Return arborescence pôle page$newTab = $this->methods->getTree();$blocColonnesPage = $pageRepository->getAllBlocksS($page->getId());return $this->renderForm('admin/post_type/page/new.html.twig', ['page' => $page,'pageForm' => $pageForm,'blocColonnes' => $blocColonneForm,'blocAccordeon' => $blocAccordeonForm,'blocDiaporama' => $blocDiaporamaForm,'blocTextImage' => $blocTextImageForm,'bloc_video' => $blocVideoForm,'poles' => $poleRepository->findAll(),'disabled' => 0,'pages' => $newTab,'blocColonnesPage' => $blocColonnesPage,]);}#[Route('/pages/{id}', name: 'app_page_delete', methods: ['POST'])]public function delete(Request $request, Page $page, PageRepository $pageRepository): Response{if ($this->isCsrfTokenValid('delete'.$page->getId(), $request->request->get('_token'))) {try {$pageRepository->remove($page, true);} catch (\Exception $e) {$this->addFlash('danger', $e->getMessage());}}return $this->redirectToRoute('app_create_page_index', [], Response::HTTP_SEE_OTHER);}#[Route('/pages/{id}/blocs', name: 'app_page_delete_bloc', methods: ['POST'])]public function deleteBloc(Request $request,Page $page,BlocColonnePageRepository $positionRepository,): Response {if ($this->isCsrfTokenValid('delete_bloc'.$page->getId(), $request->request->get('token'))) {$blocId = $request->request->get('blocId');$this->pageFormService->deleteBloc($request,$positionRepository,$blocId,'pageId',$page,'textImageId','blocDiaporama','colonne_id','blocAccordeon','blocVideo');}return $this->redirectToRoute('app_page_edit', ['id' => $page->getId()], Response::HTTP_SEE_OTHER);}}