Symfony 5.1 Génération d'un sitemap.xml

Par Yann9111, il y a 5 ans


Bonjour,

Bonjour, j'essaye de générer un fichier XML le sitemap pour mon site

Ce que je fais

<?php namespace App\Controller; 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"}) * @param Request $request * @return Response */ public function index(Request $request) { // Nous récupérons le nom d'hôte depuis l'URL $hostname = $request->getSchemeAndHttpHost(); // On initialise un tableau pour lister les URLs $urls = []; // On ajoute les URLs "statiques" $urls[] = ['loc' => $this->generateUrl('website.index')]; // Fabrication de la réponse XML $response = new Response( $this->renderView('sitemap/index.html.twig', [ 'urls' => $urls, 'hostname' => $hostname] ) ); // Ajout des entêtes $response->headers->set('Content-Type', 'text/xml'); // On envoie la réponse return $response; } }

Le Fichier TWIG

<?xml version="1.0" encoding="UTF-8"?> <urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:image="http://www.google.com/schemas/sitemap-image/1.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> {# On boucle sur les URLs #} {% for url in urls %} <url> {# On vérifie si le nom d'hôte (hostname) est présent dans l'url #} {# Si il n'y est pas, on l'ajoute #} <loc> {%if url.loc|replace({hostname:''}) == url.loc%} {{hostname}}{{url.loc}} {%else%} {{url.loc}} {%endif%} </loc> {# Si il y a une date de modification #} {% if url.lastmod is defined %} <lastmod>{{url.lastmod}}</lastmod> {% endif %} {# Si il y a une fréquence de modification #} {% if url.changefreq is defined %} <changefreq>{{url.changefreq}}</changefreq> {% endif %} {# Si il y a une priorité #} {% if url.priority is defined %} <priority>{{url.priority}}</priority> {% endif %} {# Si il y a une image #} {% if url.image is defined and url.image is not empty %} <image:image> <image:loc>{%if url.image.loc|replace({hostname:''}) == url.image.loc%}{{hostname}}{{url.image.loc}}{%else%}{{url.image.loc}}{%endif%}</image:loc> <image:title>{{ url.image.title }}</image:title> </image:image> {% endif %} </url> {% endfor %} </urlset>

Ce que je veux

L'affiche de mon xml quand je suis dans l'URL

Ce que j'obtiens

This page contains the following errors:
error on line 1 at column 1: Document is empty
Below is a rendering of the page up to the first error.

J'ai cette erreur rouge sur le lien merci pour votre aide

Aucune réponse