src/Controller/ProductController.php line 51

Open in your IDE?
  1. <?php
  2. namespace App\Controller;
  3. use App\Entity\Product;
  4. use Doctrine\ORM\EntityManagerInterface;
  5. use Symfony\Component\HttpFoundation\Response;
  6. use Symfony\Component\Routing\Annotation\Route;
  7. use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
  8. class ProductController extends AbstractController
  9. {
  10. private $entityManager;
  11. public function __construct(EntityManagerInterface $entityManager)
  12. {
  13. $this->entityManager = $entityManager;
  14. }
  15. /**
  16. * @Route("/nos-produits", name="products")
  17. */
  18. public function index()
  19. {
  20. $products = $this->entityManager->getRepository(Product::class)->findAll();
  21. return $this->render('product/index.html.twig', [
  22. 'products' => $products,
  23. ]);
  24. }
  25. /**
  26. * @Route("/produit/{slug}", name="produit")
  27. */
  28. public function show($slug)
  29. {
  30. $product = $this->entityManager->getRepository(Product::class)->findOneBySlug($slug);
  31. if(!$product){
  32. return $this->redirectToRoute('products');
  33. }
  34. return $this->render('product/show.html.twig', [
  35. 'product' => $product,
  36. ]);
  37. }
  38. /**
  39. * @Route("/product_by_category/{category}", name="product_by_category")
  40. */
  41. public function showProductsCategory($category)
  42. {
  43. $queryBuilder = $this->entityManager->createQueryBuilder();
  44. $queryBuilder->select('p')
  45. ->from('App\Entity\Product', 'p')
  46. ->join('p.category', 'c')
  47. ->where($queryBuilder->expr()->eq('c.name', ':category'))
  48. ->setParameter('category', $category);
  49. $productsByCategory = $queryBuilder->getQuery()->getResult();
  50. return $this->render('product/showProductByCategory.html.twig', [
  51. 'productsByCategory' => $productsByCategory,
  52. 'category' => $category,
  53. ]);
  54. }
  55. }