Fenêtres UI

Fenêtres informationnelles et interactives

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

2. Toasts

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