<?php
namespace App\Controller\Front;
use App\Repository\BlogAuthorRepository;
use App\Repository\BlogPostRepository;
use App\Repository\CityPostRepository;
use App\Repository\HearingBrandRepository;
use App\Repository\HearingMakerRepository;
use App\Repository\StoreRepository;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class SitemapController extends AbstractController
{
/**
* @Route("/sitemap.xml", name="sitemap")
* @param BlogPostRepository $blogPostRepository
* @param HearingBrandRepository $hearingBrandRepository
* @param CityPostRepository $cityPostRepository
* @param HearingMakerRepository $hearingMakerRepository
* @param BlogAuthorRepository $blogAuthorRepository
* @param StoreRepository $storeRepository
* @return Response
*/
public function displaySitemap(
BlogPostRepository $blogPostRepository,
HearingBrandRepository $hearingBrandRepository,
CityPostRepository $cityPostRepository,
HearingMakerRepository $hearingMakerRepository,
BlogAuthorRepository $blogAuthorRepository,
StoreRepository $storeRepository
)
{
$blogPosts = $blogPostRepository->findBy([], ['createdAt' => 'DESC']);
$hearingBrands = $hearingBrandRepository->findBy(['indexable' => true]);
$cities = $cityPostRepository->findAll();
$hearingMakers = $hearingMakerRepository->findAll();
$blogAuthors = $blogAuthorRepository->findAll();
$stores = $storeRepository->findStoresForSitemap();
$response = $this->render('front_v4/mca/sitemap/sitemap.xml.twig', [
'posts' => $blogPosts,
'indexableHearingBrands' => $hearingBrands,
'cities' => $cities,
'hearingMakers' => $hearingMakers,
'blogAuthors' => $blogAuthors,
'stores' => $stores
]);
$response->headers->set('Content-Type', 'xml');
return $response;
}
}