src/Controller/HomeController.php line 23

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Properties;
  4. use App\Repository\PropertiesRepository;
  5. use Doctrine\ORM\EntityManagerInterface;
  6. use Symfony\Component\HttpFoundation\Request;
  7. use Symfony\Component\HttpFoundation\Response;
  8. use Symfony\Component\Routing\Annotation\Route;
  9. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  10. use Symfony\Component\HttpFoundation\ResponseHeaderBag;
  11. use App\Entity\Category;
  12. /**
  13.  * @Route("/home")
  14.  */
  15. class HomeController extends AbstractController
  16. {
  17.     /**
  18.      * @Route("/accueil", name="app_home")
  19.      */
  20.     public function index(EntityManagerInterface $em): Response
  21.     {
  22. // Récupérer toutes les catégories
  23. $categories $em->getRepository(Category::class)->findAll();
  24. $properties = [];
  25. foreach ($categories as $category) {
  26.     // Récupérer les 3 dernières propriétés pour chaque catégorie
  27.     $query $em->createQuery(
  28.         'SELECT p
  29.         FROM App\Entity\Properties p
  30.         WHERE p.category = :category
  31.         ORDER BY p.createdAt DESC'
  32.     )->setParameter('category'$category)
  33.      ->setMaxResults(3);
  34.     $categoryProperties $query->getResult();
  35.     // Ajouter les propriétés de chaque catégorie à la liste des dernières propriétés
  36.     $properties array_merge($properties$categoryProperties);
  37. }
  38. // Filtrer les doublons en utilisant les identifiants uniques (IDs)
  39. $propertyIds = [];
  40. $uniqueProperties = [];
  41. foreach ($properties as $property) {
  42.     $propertyId $property->getId();
  43.     if (!in_array($propertyId$propertyIds)) {
  44.         $propertyIds[] = $propertyId;
  45.         $uniqueProperties[] = $property;
  46.     }
  47. }
  48. // Utilisez array_slice pour limiter à 9 (3 propriétés de chaque catégorie)
  49. $properties array_slice($uniqueProperties09);
  50. return $this->render('home/index.html.twig', [
  51.     'properties' => $properties,
  52. ]);
  53.     }
  54.     /**
  55.      * @Route("/about", name="app_about")
  56.      */
  57.     public function about(): Response
  58.     {
  59.         return $this->render(
  60.             'home/about.html.twig',
  61.             []
  62.         );
  63.     }
  64.     /**
  65.      * @Route("/cgu", name="app_cgu")
  66.      */
  67.     public function cgu(): Response
  68.     {
  69.         return $this->render(
  70.             'home/cgu.html.twig',
  71.             []
  72.         );
  73.     }
  74.     /**
  75.      * @Route("/cgv", name="app_cgv")
  76.      */
  77.     public function cgv(): Response
  78.     {
  79.         return $this->render(
  80.             'home/cgv.html.twig',
  81.             []
  82.         );
  83.     }
  84.     public function menuDeroulant(EntityManagerInterface $em): Response
  85.     {
  86. $properties $em->getRepository(Properties::class)->findAll();
  87. return $this->render('shared/menuDeroulant.html.twig', [
  88.     'properties' => $properties,
  89. ]);
  90.     }
  91. }