web-dev-qa-db-fra.com

Générer des routes en javascript avec Twig et Symfony2

Problème assez étrange, désolé de l'avoir demandé, je suis assez nouveau pour Symfony/Twig. Mon itinéraire nécessite un paramètre region_id obligatoire:

ajax_provinces_by_region:
  pattern: /ajax/region/{region_id}/provinces
  defaults: {_controller: SWAItaliaInCifreBundle:Ajax:provincesByRegion }
  requirements: {region_in: \d+}

La question est: comment puis-je générer cette route sur la base d'un élément select en javascript (code ci-dessous)?

Problem est: je ne peux pas utiliser les assistants path et url de Symfony car ils ont besoin de spécifier le paramètre region_id (this.value) auquel je ne peux pas accéder car c'est une variable javascript (et Twig est compilé côté serveur).

$(document).ready(function() {
    $('select#regions').change(function(){

        // Make an ajax call to get all region provinces
        $.ajax({
            url: // Generate the route using Twig helper
        });

    });
});
34
gremo

Vous pouvez utiliser le FOSJsRoutingBundle .

44
igorw

Je sais que c'est une vieille question, mais juste au cas où vous ne voudriez pas installer un paquet comme FOSJsRoutingBundle, voici un petit hack:

var url = '{{ path("yourroute", {'region_id': 'region_id'}) }}'; 
url = url.replace("region_id", this.value);

'region_id' est simplement utilisé comme espace réservé, puis vous le remplacez dans JS par votre variable actuelle this.value

68
Ben
url:  "{{ path('SampleBundle_route',{'parameter':controller_value}) }}"

SampleBundle_route est un chemin valide défini dans routing.yml ou annotatins.

Pour le test, écrivez ceci dans le modèle twig:

<script>
    var url= "{{ path('SampleBundle_route') }}";
    alert(url);
</script>
2
George
 * @Route("/{id}/edit", name="event_edit", options={"expose"=true})
0
Imen AchOurii