<?php
namespace App\Controller;
use App\Entity\Expert;
use Doctrine\ORM\EntityManagerInterface;
use Symfony\Bundle\FrameworkBundle\Controller\AbstractController;
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\Response;
use Symfony\Component\Routing\Annotation\Route;
class SitemapController extends AbstractController
{
/**
* @Route("/sitemap.xml", name="sitemap", defaults={"_format"="xml"})
*/
public function index(
Request $request,
EntityManagerInterface $em
): Response {
$hostname = $request->getSchemeAndHttpHost();
$urls = [];
$urls[] = ['loc' => $this->generateUrl('app_home')];
$urls[] = ['loc' => $this->generateUrl('app_expert_index')];
$urls[] = ['loc' => $this->generateUrl('app_difference')];
$urls[] = ['loc' => $this->generateUrl('app_office')];
$urls[] = ['loc' => $this->generateUrl('app_tarif')];
$urls[] = ['loc' => $this->generateUrl('app_contact')];
$urls[] = ['loc' => $this->generateUrl('app_mentions_legales')];
// experts list
foreach ($em->getRepository(Expert::class)->findAll() as $expert) {
$images = [
'loc' => '/assets/img/experts/' . $expert->getImage(),
'title' => $expert->getFirstname() . ' ' . $expert->getLastname()
];
$urls[] = [
'loc' => $this->generateUrl('app_expert_show', [
'slug' => $expert->getSlug(),
]),
'image' => $images
];
}
// return $this->render('sitemap/index.html.twig', [
// 'controller_name' => 'SitemapController',
// ]);
$response = new Response(
$this->renderView('sitemap/index.html.twig', [
'urls' => $urls,
'hostname' => $hostname]
)
);
$response->headers->set('Content-Type', 'text/xml');
return $response;
}
}