<?php
namespace App\Controller;
use App\Entity\Album;
use App\Entity\Portfolio;
use App\Entity\Service;
use App\Entity\CategoryServices;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\Routing\Annotation\Route;
use Sensio\Bundle\FrameworkExtraBundle\Configuration\ParamConverter;
use function Symfony\Component\DependencyInjection\Loader\Configurator\service;
class PortfolioController extends AbstractController
{
/**
* @var EntityManagerInterface
*/
private $em;
public function __construct(EntityManagerInterface $em)
{
$this->em = $em;
}
/**
* @Route("/portfolio", name="albums")
* @return Response
*/
public function listAlbumByServices(Request $request): Response
{
$categories = $this->em->getRepository(CategoryServices::class)->findBy(['status' => 1]);
$services = $this->em->getRepository(Service::class)->findBy(['status' => 1]);
$albums = $this->em->getRepository(Album::class)->findBy(['status' => 1]);
//dd($services);
return $this->render('pages/index-portfolio.html.twig', [
'categories' => $categories,
'albums' => $albums,
'services' => $services,
// pré-sélection possible via /portfolio?category=photo&service=podcast
'preselectCategory' => $request->query->get('category', 'all'),
'preselectService' => $request->query->get('service', 'all'),
]);
}
// /**
// * @Route("/portfolio", name="albums")
// * @return Response
// */
// public function album(): Response {
// $albums = $this->em->getRepository(Album::class)->findAll();
// //dd($albums);
// return $this->render('pages/albums.html.twig', [
// 'albums' => $albums
// ]);
// }
/**
* @Route("/portfolio/{id}", name="album_portfolio")
* @ParamConverter("portfolio", class="App\Entity\Album")
* @return Response
*/
public function portfolio(Album $album): Response
{
$portfolio = $this->em->getRepository(Portfolio::class)->findBy(['album' => $album]);
return $this->render('pages/portfolio.html.twig', [
'photos' => $portfolio,
'album' => $album
]);
}
/**
* @Route("/portfolio/{serviceSlug}/{id}", name="portfolio_albums")
* @return Response
*/
public function portfolioView(string $serviceSlug, Album $album): Response
{
//dd($album);
$portfolio = $this->em->getRepository(Portfolio::class)->findBy(['album' => $album]);
$service = $this->em->getRepository(Service::class)->findOneBy(['slug' => $serviceSlug]);
return $this->render('pages/portfolio.html.twig', [
'photos' => $portfolio,
'album_name' => $service->getName(),
'album' => $album
]);
}
}