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
});
});
});
Vous pouvez utiliser le FOSJsRoutingBundle .
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
url: "{{ path('SampleBundle_route',{'parameter':controller_value}) }}"
Où 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>
* @Route("/{id}/edit", name="event_edit", options={"expose"=true})