Aller au contenu principal
loading

Symfony2 : accéder aux routes dans vos fichiers Javascript

POSTÉ DANS Symfony TAGS Symfony AUTEUR herve COMMENTAIRES 1

Vous souhaitez accéder aux routes dans vos fichiers javascript plutôt que de rentrer les URL à la mano, notamment pour faire de l'Ajax, voici la solution sous forme de tutoriel :

# Si vous n'avez pas composer, vous pouvez l'installer directement dans votre projet :

curl -s getcomposer.org/installer | php -d detect_unicode=Off



# Tout d'abord, il faut ajouter les lignes souivantes dans "composer.json" :

"require": {
     ...
     "friendsofsymfony/jsrouting-bundle": "~1.1"
}



#Ensuite, téléchargez le composant jsrouting:

php composer.phar update friendsofsymfony/jsrouting-bundle



#Puis ajouter le routing dans votre fichier 'app/config/routing.yml'

fos_js_routing:
     resource: "@FOSJsRoutingBundle/Resources/config/routing/routing.xml"

#Après, il faut déclarer les routes auxquelles on souhaite accéder :

fos_js_routing:
     routes_to_expose: [ (.*) ] 

#ici on permet l'accès à toutes les routes, sinon vous pouvez les déclarer une par une :

routes_to_expose: [ route1, route2, ... ]



# Enfin, installez les fichiers publics dans le repertoire web :

php app/console assets:install --symlink web



Voilà, il ne vous reste plus qu'à déclarer les fichiers JS dans votre layout :

<script src="{{ asset('bundles/fosjsrouting/js/router.js') }}"></script>
<script src="{{ path('fos_js_routing_js', {"callback": "fos.Router.setData"}) }}"></script>



Ensuite, dans votre fichier JS, il suffit de l'appeler comme ceci :

Routing.generate('route1')



exemple avec jQuery :

$.ajax({
   url: Routing.generate('route1')
}).done(function(data) {...});

 

 



1 commentaire