<?php
namespace App\Controller;
use App\Repository\ArticleRepository;
use App\Repository\BrandRepository;
use App\Repository\CategoryRepository;
use App\Repository\CityRepository;
use App\Repository\SectionRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class AppController extends AbstractController
{
private $categoryRepository;
private $sectionRepository;
private $cityRepository;
private $brandRepository;
public function __construct(SectionRepository $sectionRepository, CategoryRepository $categoryRepository, CityRepository $cityRepository, BrandRepository $brandRepository)
{
$this->categoryRepository = $categoryRepository;
$this->sectionRepository = $sectionRepository;
$this->cityRepository = $cityRepository;
$this->brandRepository = $brandRepository;
}
/**
* @Route("/", name="app_app")
*/
public function index(Request $request, ArticleRepository $articleRepository): Response
{
$newOffers = $articleRepository->findBy(['is_offer' => true], ['id' => 'desc'],8);
$newRequests = $articleRepository->findBy(['is_offer' => false], ['id' => 'desc'], 8);
return $this->renderWithParams('app/index.html.twig', [
'newOffers' => $newOffers,
'newRequests' => $newRequests,
]);
}
public function renderWithParams(string $template, array $params){
$categories = $this->categoryRepository->findAll();
$sections = $this->sectionRepository->findAll();
$cities = $this->cityRepository->getSortedCities();
$user = $this->getUser();
$brands = $this->brandRepository->findAll();
$parameters = array_merge($params, [
'controller_name' => 'AppController',
'user' => $user,
'sections' => $sections,
'categories' => $categories,
'cities' => $cities,
'brands' => $brands
] );
return $this->render($template, $parameters);
}
/**
* @Route("/change-locale/{locale}", name="change_locale")
*/
public function changeLocale($locale, Request $request){
// On stocke la langue dans la session
$request->getSession()->set('_locale', $locale);
$request->setLocale($locale);
// On revient sur la page précédente
return $this->redirect($request->headers->get('referer'));
}
}