Dévelopeur d'applications web

Blog du dévelopeur web écrit en rythme du zouk

Ce site ne sera plus alimenté de contenu après août 2014. Tous les nouveaux articles seront redigés pour www.waitingforcode.com

*

*

*

Moi

Développeur d'applications Internet et journaliste passionné par l'adjectif français. Un aigle polonais orienté vers la progression, volant très haut et écoutant du zouk après les matches du foot français.

Vous appréciez mon travail ?

Pour contribuer au développement de ce site, ou pour remercier pour des articles rédigés, vous pouvez faire un don.

Un conseil Symfony2

Comment utiliser les routes d'un autre environnement ?

En utilisant les routes d'un autre environnement sous Symfony2 on risque de voir le nom du dispatcher. Supossons qu'on est placé dans notre backoffice, déclenché avec le fichier administration.php . On se trouve donc dans un url /administration.php/admin/get/order/1 . L'environnement courant est donc "administration". Si l'on veut appeler une route de l'environnement "frontend", "/show/order/1", on risque de voir l'url suivant : /administration.php/show/order/1 . Cela est provoqué par le fait que Symfony2 reprend l'environnement actuel. Pour éviter ce genre de situations, il faut récupérer l'objet qui gère la génération des urls pour l'environnement donné. Ensuite, temporairement, il faut lui indiquer l'url de base à utiliser pour les chemins. Voici le code qui devrait résoudre ce problème :

$generator = $this->container->get('router')->getGenerator();
// var_dump($generator->getOption('baseurl'));
// Symfony\Component\Routing\RequestContext
$requestContext = $generator->getContext();
// sets base URL used in the generated URL
$requestContext->setBaseUrl('frontend.php');
// var_dump($requestContext);
$generator->setContext($requestContext);
//var_dump($generator);
echo $this->generateUrl('showOrder', array('id' => 1));
// will show /frontend.php/show/order/1 url