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

tout à fait étrange problème, désolé de demander, je suis tout à fait nouveau à Symfony/brindille. Mon itinéraire nécessite obligatoirement un region_id paramenter:

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

question is: Comment puis-je générer cette route basée sur un select élément en javascript (code ci-dessous)?

problème est: je ne peux pas utiliser path et url helpers de Symfony comme ils ont besoin de spécifier l' region_id paramètre (this.value) Je ne peux pas y accéder parce que 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
demandé sur j0k 2011-10-02 18:01:03

4 réponses

Vous pouvez utiliser le FOSJsRoutingBundle.

44
répondu igorw 2011-10-02 14:37:29

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

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

'region_id' est juste utilisé comme un placeholder, puis vous le remplacez dans JS avec votre variable actuelle ceci.valeur

67
répondu Ben 2013-05-01 18:09:55
url:  "{{ path('SampleBundle_route',{'parameter':controller_value}) }}"

SampleBundle_route est un chemin valide défini dans le routage.YML ou annotatins.

Pour les tests, il faut l'indiquer dans le template twig:

<script>
    var url= "{{ path('SampleBundle_route') }}";
    alert(url);
</script>
2
répondu George 2016-02-25 12:09:35
 * @Route("/{id}/edit", name="event_edit", options={"expose"=true})
0
répondu Imen AchOurii 2016-11-08 20:50:15