src/Controller/Front/SeoController.php line 23

  1. <?php
  2. declare(strict_types=1);
  3. namespace App\Controller\Front;
  4. use App\Entity\Seo\SeoParent;
  5. use App\Repository\ActualiteRepository;
  6. use App\Repository\AgendaRepository;
  7. use App\Repository\FormationRepository;
  8. use App\Repository\OffreEmploiRepository;
  9. use App\Repository\PageRepository;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\HttpFoundation\Request;
  12. use Symfony\Component\HttpFoundation\Response;
  13. use Symfony\Component\Routing\Annotation\Route;
  14. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  15. use Symfony\Component\Routing\RouterInterface;
  16. class SeoController extends AbstractController
  17. {
  18.     #[Route('/admin/global/seo/page/{id}'name'app_global_seo_page')]
  19.     public function page(
  20.         PageRepository $pageRepository,
  21.         RouterInterface $router,
  22.         int $id,
  23.     ): Response {
  24.         $page $pageRepository->find($id);
  25.         $slug $page $page->getSlug() : null;
  26.         $seoPage $slug $pageRepository->pageSeo($id) : null;
  27.         if (!\count($seoPage)) {
  28.             return new Response();
  29.         }
  30.         // if (isset($seoPage[0]['url_canonical'])) {
  31.         //     $seoPage[0]['url_canonical'] = $router->generate(
  32.         //         'page_front_slug',
  33.         //         ['Url personnalisée' => $slug],
  34.         //         UrlGeneratorInterface::ABSOLUTE_URL
  35.         //     );
  36.         // }
  37.         // robot_index
  38.         if (!isset($seoPage[0]['robot_index'])) {
  39.             $seoPage[0]['robot_index'] = 0;
  40.         }
  41.         // robot_follow
  42.         if (!isset($seoPage[0]['robot_follow'])) {
  43.             $seoPage[0]['robot_follow'] = 0;
  44.         }
  45.         return $this->render('seo/_seoPage.html.twig', [
  46.             'seoPage' => $seoPage[0],
  47.         ]);
  48.     }
  49.     #[
  50.         Route('/admin/global/seo/actualite/{id}'name'app_global_seo_actualite'),
  51.         Route('/admin/global/seo/offre-emploi/{id}'name'app_global_seo_offre_emploi'),
  52.         Route('/admin/global/seo/formation/{id}'name'app_global_seo_formation'),
  53.         Route('/admin/global/seo/evenement/{id}'name'app_global_seo_evenement')
  54.     ]
  55.     public function actualite(
  56.         ActualiteRepository $actualiteRepository,
  57.         OffreEmploiRepository $offreEmploiRepository,
  58.         FormationRepository $formationRepository,
  59.         AgendaRepository $agendaRepository,
  60.         RouterInterface $router,
  61.         Request $request,
  62.         int $id,
  63.     ): Response {
  64.         $name $request->attributes->get('_route');
  65.         switch ($name) {
  66.             case 'app_global_seo_actualite':
  67.                 $seo_type_seo $actualiteRepository->seoActualite($id);
  68.                 $name_route_id 'app_actualite_detail';
  69.                 $name_id 'actualite';
  70.                 $name_route_slug 'app_actualite_detail_slug';
  71.                 break;
  72.             case 'app_global_seo_offre_emploi':
  73.                 $seo_type_seo $offreEmploiRepository->seoOffreEmploi($id);
  74.                 $name_route_id 'app_offre_emploi_detail';
  75.                 $name_id 'offreEmploi';
  76.                 $name_route_slug 'app_offre_emploi_detail_slug';
  77.                 break;
  78.             case 'app_global_seo_formation':
  79.                 $seo_type_seo $formationRepository->seoFormation($id);
  80.                 $name_route_id 'app_formation_detail';
  81.                 $name_id 'formation';
  82.                 $name_route_slug 'app_formation_detail_slug';
  83.                 break;
  84.             case 'app_global_seo_evenement':
  85.                 $seo_type_seo $agendaRepository->seoAgenda($id);
  86.                 $name_route_id 'app_evenement_detail';
  87.                 $name_id 'evenement';
  88.                 $name_route_slug 'app_evenement_detail_slug';
  89.                 break;
  90.             default:
  91.                 $seo_type_seo null;
  92.                 $name_route_id null;
  93.                 $name_id null;
  94.                 $name_route_slug null;
  95.                 break;
  96.         }
  97.         if (!$seo_type_seo) {
  98.             return new Response();
  99.         }
  100.         $seo_parent $seo_type_seo->getSeoParent();
  101.         if (!$seo_parent) {
  102.             $seo_parent = new SeoParent();
  103.             $seo_type_seo->setSeoParent($seo_parent);
  104.         }
  105.         if (!$seo_parent->getUrlCanonical()) {
  106.             $seo_parent->setUrlCanonical(
  107.                 $router->generate(
  108.                     $name_route_id,
  109.                     [$name_id => $id],
  110.                     UrlGeneratorInterface::ABSOLUTE_URL
  111.                 )
  112.             );
  113.             $slug $seo_type_seo->getSlug();
  114.             if ($slug) {
  115.                 $seo_parent->setUrlCanonical(
  116.                     $router->generate(
  117.                         $name_route_slug,
  118.                         ['slug' => $slug],
  119.                         UrlGeneratorInterface::ABSOLUTE_URL
  120.                     )
  121.                 );
  122.             }
  123.         }
  124.         return $this->render('seo/_seo.html.twig', [
  125.             'seoParent' => $seo_type_seo,
  126.         ]);
  127.     }
  128. }