src/Controller/ProjectController.php line 31

  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Category;
  4. use App\Entity\Project;
  5. use App\Repository\ProjectRepository;
  6. use App\Service\OpenGraphService;
  7. use Doctrine\ORM\EntityManagerInterface;
  8. use Leogout\Bundle\SeoBundle\Provider\SeoGeneratorProvider;
  9. use Symfony\Bridge\Doctrine\ManagerRegistry;
  10. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  11. use Symfony\Component\Asset\Package;
  12. use Symfony\Component\Asset\VersionStrategy\EmptyVersionStrategy;
  13. use Symfony\Component\HttpFoundation\RedirectResponse;
  14. use Symfony\Component\HttpFoundation\Response;
  15. use Symfony\Component\Routing\Annotation\Route;
  16. use Symfony\Component\Routing\Generator\UrlGeneratorInterface;
  17. #[Route('/project')]
  18. class ProjectController extends AbstractController
  19. {
  20.     public function __construct(private readonly EntityManagerInterface $em, private readonly OpenGraphService $openGraph) {}
  21.     /**
  22.      * @Route("/{id}", name="project_show", requirements={"id":"\d+"})
  23.      * @Route("/{slug}", name="project_show_slug")
  24.      */
  25.     #[Route('/{id}'name"project_show",requirements: ['id' => '\d+'] )]
  26.     #[Route('/{slug}'name"project_show_slug",requirements: ['slug' => '[a-zA-Z]+'] )]
  27.     public function show(Project $project): Response
  28.     {
  29.         $category $this->em->getRepository(Category::class)->findAll();
  30.         $site_url $this->generateUrl('project_show', ['id' => $project->getId()], UrlGeneratorInterface::ABSOLUTE_URL);
  31.         $this->openGraph->open_graph($project->getContent(), 'Project'$site_url$project->getName(), $project->getImage());
  32.         return $this->render('project/show.html.twig', [
  33.             'project' => $project,
  34.             'categories' => $category
  35.         ]);
  36.     }
  37.     /**
  38.      * @Route("/reorder", name="reorder")
  39.      */
  40.     public function reorderModules(ManagerRegistry $managerProjectRepository $projectRepository):
  41.     RedirectResponse
  42.     {
  43.         // TODO: seulement pour admin
  44.         // TODO: confirmation
  45.         $projects $projectRepository->findBy(
  46.             [],
  47.             ['displayOrder' => 'ASC']
  48.         );
  49.         $em $manager->getManager();
  50.         $i 1;
  51.         foreach ($projects as $project) {
  52.             $project->setDisplayOrder($i);
  53.             $em->persist($project);
  54.             $i++;
  55.         }
  56.         $em->flush();
  57.         return $this->redirectToRoute('admin');
  58.     }
  59. }