Bonjour à tous ,

je m'explique, j'ai une map du monde cliquable par continents au format svg, quand je clique sur un continent j'aimerais que cela me renvoi sur la page de celui-ci que j'ai inclus dans ma base de donnée.
J'ai réussi a faire cette opération dans le menu de mon header en utilisant la methode "Render" de controller ou j'ai un menu déroulant qui m'affiche les continents que j'ai récupérer depuis ma bdd comme ceci :

fichier base.html.twig

 <div class="map_list">
                                <ul>
                                    {{ render(controller('App\\Controller\\DestinationController::index')) }}
                                </ul>
                            </div>

fichier destination/index.html.twig

<ul>
    {% for continent in continents %}
    <li><a href="{{ path('destination', {'slug': continent.slug}) }}">{{ continent.continents }}</a></li>
    {% endfor %}
</ul>

Fichier DestinationController.php

    public function __construct(ContinentRepository $continent, DestinationRepository $country)
    {
        $this->continent = $continent;
        $this->country = $country;
    }

    /**
     * @Route("/destination", name="destinations")
     * @param ContinentRepository $continent
     * @param  DestinationRepository $country
     * @return Response
     */

    public function index(): Response
    {
        $continents = $this->continent->findAll(Continent::class);
        $country = $this->country->findAll(Destination::class);

        return $this->render('destination/index.html.twig', [
            'continents' => $continents,
            'destinations' => $country

        ]);

    }

    /**
     * @Route("/destination/{slug}", name="destination")
     * @param ContinentRepository $continent
     * @return Response
     */

    public function continent($slug): Response
    {
        $continent = $this->getDoctrine()->getRepository(Continent::class)->findOneBy([
            'slug' => $slug
        ]);

        return $this->render('destination/show.html.twig', compact('continent'));

    }

Et dans mon fichier "pages/home.html.twig" j'ai cette MAP ou j'aimerais inclure dans chaque balises "a" le lien vers le continent concerné de ma base de donnée. Si quelqu'un a une piste ce serais super !! :)

<div class="map">
                        <svg version="1.1"
                             id="svg2" xmlns:cc="http://creativecommons.org/ns#" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:svg="http://www.w3.org/2000/svg"
                             xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" viewBox="0 0 2000 1001">

                            <a id="continent-AS" xlink:title="Asie" xlink:href="#"><path  inkscape:connector-curvature="0" class="Asie" d="M1370.3,311.3h-4.6l-3.3-0.4l-2.1,2.3l-1.8,0.6l-1.3,1l-2.2-1.7
                        l-0.9-4.3l-1.4-0.2V307l-2.7-1.2l-1.5,1.8l0.2,2.1l-0.5,0.7l-2.7-0.1l-0.8,2.4l-1.8-1l-2.8,1.7l-1.5-0.6l-3.7-1.1h-2.5l-1.4-0.2
                        l-2.5-1.4l-0.3,1.8l-3.5,1l0.1,4.1l-2.1,1.6l-3.4,0.7l-0.3,2.4l-3.3,0.6l-5.1-1.9l-0.4,6.4l-0.4,3.7l2.1,0.7l-1.4,2.8l2.3,4.1
                        l0.9,3.2l3.7,0.9l0.9,3.2l-3.3,4.6l8.2,2.6l4.5-0.7l2.8,0.6l0.8-1.1l3.3,0.4l5.7-2.1l-0.7-4.3l2-2.9h3.4l0.2-1.4l3.4-0.7l1.8,0.5
                        l1.5-1.4l-0.9-3l1.3-3l2.6-1.3l-2.6-3.3l4.4,0.2l0.8-1.8l-0.7-2l1.7-2.2l-1.2-2.6l-1.6-2.2l2.1-2.2l4.5-1l5-0.6l2.1-1l2.4-0.6
                        L1370.3,311.3L1370.3,311.3z M1296.5,370.9l-1.1-1.8l-2.6,3.1l-3.2,3.3l-2.8,3.4l-2.8-0.2
                        l-3.9-0.2l-3.6,0.8l-0.3-1.4l-0.9,0.2l0.3,1.2l2.2,5.1l14.4,2.6l0.9-1l-0.1-2.1l1.2-2.1l-0.3-2.1l2.1-1l-0.9-0.6l0.1-3.3h2.4
                        L1296.5,370.9L1296.5,370.9z M1240.8,304.4l-0.8-3.5l-2.1-0.9l-2.1-1.4l0.9-1.6l-2.7-1.8l0.6-1.2
                        l-1.9-0.9l-1.2-1.4l-5.9,0.8l1.1,1.8v2.5l3.6,1.2l2.1,1.5l0.9-0.2l1.5,1.4h2l0.2,0.8l2.4,2.9L1240.8,304.4L1240.8,304.4z M1233.2,299.4l-0.9,0.2l1,1.9l2.7,2.3l3.2,0.7l-2.4-2.9l-0.2-0.8h-2
                        L1233.2,299.4L1233.2,299.4z M1242.1,292l-3.7-3l-1.3-0.2l-0.9,0.7l2.7,2.7l-0.5,0.6l-2.4-0.3l-3.6-1.4l-0.9,0.8l1.2,1.4l1.9,0.9
                        l-0.6,1.2l2.7,1.8l-0.9,1.6l2.1,1.4l2.1,0.9l0.8,3.5l4.5-3.7l1.6-0.4l1.6,1.5l-1,2.5l3.3,2.7l1.1-0.2l-0.7-2.6l1.5-1.2l0.3-1.8
                        l-0.1-4l3.6-0.4l-1.7-1.4l-2.1-0.2l-3-3.6l-2.9-2.6l0,0l-2.2,2l-0.4,1.2L1242.1,292L1242.1,292z M1470.3,389.5l-3.9-8.1l-1.3,0.1l-0.2,3.2l-3-2.6l0.9-2.9l2.1-0.3
                        l1.4-4.2l-2.9-0.9l-4.3,0.1l-4.6-0.7l-1-3.5l-2.3-0.3l-4.1-2.2l-1,3.4l3.9,2.7l-2.7,1.9l-0.7,1.8l3.2,1.4l-0.3,3l2.2,3.8l1.4,4.1
                        l1.9,0.5l1.5,0.6l0.5-1l2.1,1l1.1-2.8l-0.8-2.1l4.4,0.2l2.4,2.9l1.3,2.5l0.7,2.6l1.7,2.6l-0.9-4.1l1.8,0.8L1470.3,389.5
                        L1470.3,389.5z M1460.2,360.5l-2.3-1.4l-2.5-0.1l-3.6-1.2l-2.2,1.3l-2.2,3.8l0.3,1

2 réponses


Bonjour.

Dans la méthode qui te permet de rendre la vue pages/home.html.twig, il te suffit de récupérer la liste des continents, de transmettre à la vue la variable qui contient le résultat, puis de faire une boucle sur ce résultat autour du lien.

Qu'est-ce qu'il y a de compliqué pour faire ça ?

Math142
Auteur

Daccord merci désolé je débute je ne voyais pas le principe , sa fonctionne en mettant la boucle autour du lien d'un continent et d'en le href le chemin et le slug il ne me reste qu'a trouver le moyen d'indiquer le bon continent car il m'amène toujours sur le même ^^