<?php
namespace App\Controller;
use App\Entity\Produit;
use App\Entity\Categorie;
use App\Repository\ProduitRepository;
use App\Repository\PhotoProduitRepository;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
class ProduitController extends AbstractController
{
/* pour faire les routes catalogue et fiche produit */
/**
* @Route("/catalogue", name="catalogue")
*/
public function catalogue(ProduitRepository $repoProduit): Response
{
$produitsArray = $repoProduit->findBy(array(), array('position'=>'ASC'));
return $this->render('produit/catalogue.html.twig', [
"produits" => $produitsArray,
"categorie" => 'Tous'
]);
}
/**
* @Route("/categorie/{id}", name="categorie")
*/
public function categorie (ProduitRepository $repoProduit , Categorie $categorie): Response
{
$categorieId = $categorie->getId();
$produits = $repoProduit->findBy(array('categorie'=>$categorie), array('position'=>'ASC'));
return $this->render('produit/catalogue.html.twig', [
"produits" => $produits,
"categorie" => $categorie
]);
}
/**
* @Route("/showcase", name="showcase")
*/
public function showcase(ProduitRepository $repoProduit): Response
{
$produitsArray = $repoProduit->findAll();
$produitShowcase = [];
foreach ( $produitsArray as $produit){
$showcase =$produit->getShowcase();
if ($showcase) {
$produitShowcase[] = $produit;
}
}
return $this->render('produit/showcase.html.twig', [
"produitsShowcase" => $produitShowcase
]);
}
/**
* @Route("/fiche-produit/{id}", name="fiche_produit")
*
* <\d+> est pour limité le paramètre aux entiers
*/
public function fiche_produit($id, ProduitRepository $repoProduit,Request $request): Response
{
// si la requête vient du catalogue
$produit = $repoProduit->find($id);
// on recupère les photos du produit concerné pour alimenter les vignettes du caroussel c'est plus direct pour les récupérer en javascript que sous forme de varianle TWIG
$photos = $produit->getPhotoProduits();
$nomPhotos =[];
foreach ( $photos as $photo) {
$nomPhotos []=$photo->getNom();
}
$nomPhotos_str = json_encode($nomPhotos) ;
return $this->render('produit/fiche_produit.html.twig', [
'produit'=>$produit,
'photos'=>$nomPhotos_str,
]);
}
} //fin de class