src/Controller/Admin/Pages/PageController.php line 80

Open in your IDE?
  1. <?php
  2. namespace App\Controller\Admin\Pages;
  3. use App\Entity\Pages\Page;
  4. use App\Entity\Pages\PageCategory;
  5. use App\Service\Manager\AdminManager;
  6. use App\Entity\Pages\PageSousCategory;
  7. use App\Controller\Admin\CoreController;
  8. use App\Repository\Pages\PageRepository;
  9. use App\Form\Search\Pages\SearchPageType;
  10. use App\Repository\LanguagesRepository;
  11. use App\Service\Manager\Pages\PageManager;
  12. use Symfony\Component\HttpFoundation\Request;
  13. use Symfony\Component\HttpFoundation\Response;
  14. use Symfony\Component\Routing\Annotation\Route;
  15. use App\Repository\Pages\PageSousCategoryRepository;
  16. use App\Service\LanguagesManager;
  17. #[Route('/admin/pages/page')]
  18. class PageController extends CoreController
  19. {
  20.     #[Route('/{parent?0}/{page?0}'name'admin_pages_page_index'requirements: ['page' => '\d+''parent' => '\d+'])]
  21.     public function index(Request $requestPageRepository $repositoryPageSousCategoryRepository $PageSousCategoryRepository,?string $parent null,?Page $page null): Response
  22.     {
  23.         $language $this->getCurrentLanguage();
  24.         $type =  "";
  25.         $form $this->createForm(SearchPageType::class, null, [
  26.             'method' => 'GET',
  27.             'langauge' => $language
  28.         ]);
  29.         $form->handleRequest($request);
  30.         $formParams $form->getData() ?? [];
  31.         $formParams['category'] = $parent ?? null;
  32.         $formParams['parent'] = $page ?? null;
  33.         $formParams['homePage'] = $this->getParameter('id_home_page');
  34.         if(!$parent)
  35.         $formParams['notCategory']=1;
  36.         if(!$page)
  37.         $formParams['notParent']=1;
  38.         return $this->render('admin/pages/page/index.html.twig', [
  39.             'lists' =>  $repository->paginateAllVisible(
  40.                 $language,
  41.                 $request->query->getInt('page'1), 
  42.                 $formParams,
  43.             ),
  44.             'form' => $form->createView(),
  45.             'table' => $this->getTable($type),
  46.             'category' => $parent $PageSousCategoryRepository->getAllQb($language, ['id' => $parent ])->getOneOrNullResult() : null ,
  47.             'page' => $page
  48.         ]);
  49.     }
  50.     /** @param  PageSousCategory $category */
  51.     #[Route('/new/{category?0}/{parent?0}'name'admin_pages_page_new'requirements: ['category' => '\d+''parent' => '\d+'])]
  52.     public function new(PageManager $pageManagerPageSousCategoryRepository $PageSousCategoryRepositoryLanguagesRepository $languagesRepositoryLanguagesManager $languagesManager, ?PageSousCategory $category null, ?Page $parent null) {
  53.         $page = new Page();
  54.         $page $languagesManager->addLangue($pagetrue);
  55.         
  56.         if ($category$page->setPageSousCategory($category);
  57.         if ($parent$page->setParent($parent);
  58.         $response $pageManager->getForm($page);
  59.         if($response instanceof Response) return $response;
  60.         return $this->render('admin/pages/page/form.html.twig', [
  61.             'languages' => $languagesRepository->findBy(['deletedAt' => null]),
  62.             'field' => $response['page'],
  63.             'form' => $response['form'],
  64.             'medias' => $response['medias'],
  65.             'paletteColors' => $response['paletteColors'],
  66.             'parentPage' => $parent,
  67.             'parent' => $category $PageSousCategoryRepository->getAllQb($this->getCurrentLanguage(), ['id' => $category ], ['id' => $this->getParameter('id_home_page'), 'media_page' => true])->getOneOrNullResult() : null
  68.         ]);
  69.     }
  70.     #[Route('/edit/{id}'name'admin_pages_page_edit')]
  71.     public function edit(Page $pagePageManager $pageManagerPageSousCategoryRepository $PageSousCategoryRepositoryLanguagesRepository $languagesRepositoryLanguagesManager $languagesManager) {
  72.         $page $languagesManager->addLangue($pagefalse);
  73.         $response $pageManager->getForm($page);
  74.         
  75.         if($response instanceof Response) return $response;
  76.         return $this->render('admin/pages/page/form.html.twig', [
  77.             'languages' => $languagesRepository->findBy(['deletedAt' => null]),
  78.             'field' => $response['page'],
  79.             'form' => $response['form'],
  80.             'medias' => $response['medias'],
  81.             'paletteColors' => $response['paletteColors'],
  82.             'parent' => $page->getPageSousCategory() ? $PageSousCategoryRepository->getAllQb($this->getCurrentLanguage(), ['id' => $page->getPageSousCategory() ])->getOneOrNullResult() : null,
  83.             'blocs' => $response['blocs']
  84.         ]);
  85.     }
  86.     #[Route('/delete/{id}'name'admin_pages_page_delete')]
  87.     public function delete(Request $requestPage $pageAdminManager $adminManager): Response
  88.     {
  89.         if ($this->isCsrfTokenValid('delete'.$page->getId(), $request->query->get('_token'))) {
  90.             $adminManager->deleteEntity($page);
  91.         }
  92.         
  93.         $category $page->getPageSousCategory();
  94.         if($category) {
  95.             return $this->redirectToRoute('admin_pages_page_index', ['parent' =>  $category->getId()  ] );
  96.         } else {
  97.             return $this->redirectToRoute('admin_pages_page_index');
  98.         }
  99.     }
  100.     public function getTable($type =  null)
  101.     {
  102.       
  103.         $fields = [
  104.             [
  105.                 'field' => 'page_name',
  106.                 'order' => 'page_name',
  107.             ],
  108.             [
  109.                 'field' => 'isEnable',
  110.                 'type' => 'isEnable',
  111.                 'order' => 'p.isEnable',
  112.             ],
  113.             [
  114.                 'field' => 'createdAt',
  115.                 'type' => 'date',
  116.                 'order' => 'p.createdAt'
  117.             ]
  118.         ];
  119.         $actions = [
  120.             [
  121.                 'label' => 'show',
  122.                 'icon' => 'eye',
  123.                 'type' => 'show',
  124.                 'path' => 'admin_pages_page_index',
  125.             ],
  126.             [
  127.                 'label' => 'edit',
  128.                 'icon' => 'edit',
  129.                 'path' => 'admin_pages_page_edit',
  130.             ],
  131.             [
  132.                 'label' => 'delete_page',
  133.                 'type' => 'delete',
  134.                 'path' => 'admin_pages_page_delete',
  135.             ]
  136.         ];
  137.         return [
  138.             'id' => 'p',
  139.             'fields' => array_filter($fields),
  140.             'actions'=> $actions
  141.         ];
  142.     }
  143. }