<?php
/*
* This file has been created by Romain Biard.
* https://www.github.com/romain
*/
declare(strict_types=1);
namespace App\Controller\Shop;
use Psr\Log\LoggerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Sylius\Component\Locale\Context\LocaleContextInterface;
use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\RouterInterface;
use Symfony\Contracts\Translation\TranslatorInterface;
use Twig\Environment;
use App\Entity\Store\Store;
class StoreController extends AbstractController
{
/** @var RouterInterface */
private $router;
/** @var Environment */
private $templatingEngine;
/** @var LocaleContextInterface */
private $localeContext;
/** @var ParameterBagInterface */
private $params;
/** @var TranslatorInterface */
private $translator;
/** @var LoggerInterface */
private $logger;
/**
* @param Environment $templatingEngine
*/
public function __construct(
RouterInterface $router,
Environment $templatingEngine,
LocaleContextInterface $localeContext,
ParameterBagInterface $params,
TranslatorInterface $translator,
LoggerInterface $logger
) {
$this->router = $router;
$this->templatingEngine = $templatingEngine;
$this->localeContext = $localeContext;
$this->params = $params;
$this->translator = $translator;
$this->logger = $logger;
}
public function index (Request $request): Response
{
$locale = $request->getLocale();
$em = $this->getDoctrine()->getManager();
$storeRepository = $em->getRepository(Store::class);
$stores = $storeRepository->findEnabledByLocale(true, $locale);
return new Response($this->templatingEngine->render('mons/stores/index.html.twig', [
'page' => [
'title' => $this->translator->trans('sylius.stores.our_stores'),
'breadcrumb' => $this->translator->trans('sylius.stores.our_stores'),
],
'stores' => $stores
]));
}
public function home (Request $request): Response
{
$locale = $request->getLocale();
$em = $this->getDoctrine()->getManager();
$storeRepository = $em->getRepository(Store::class);
$stores = $storeRepository->findEnabledByLocale(true, $locale);
return new Response($this->templatingEngine->render('mons/stores/home.html.twig', [
'stores' => $stores
]));
}
public function show (Request $request, string $code): Response
{
$locale = $request->getLocale();
$em = $this->getDoctrine()->getManager();
$storeRepository = $em->getRepository(Store::class);
$store = $storeRepository->findOneEnabledByCode($code, $locale);
return new Response($this->templatingEngine->render('mons/stores/show.html.twig', [
'page' => [
'title' => $store->getName(),
'breadcrumb' => $store->getNameWhenLinked(),
'metaKeywords' => $store->getMetaKeywords(),
'metaDescription' => $store->getMetaDescription(),
],
'store' => $store
]));
}
}