239 votes

Comment obtenir le tracé actuel dans Symfony 2 ?

Comment puis-je obtenir l’itinéraire en cours dans Symfony 2 ?

Par exemple, `` :

Comment puis-je obtenir ce `` valeur ?

334voto

tuxedo25 Points 2025

De quelque chose qui est ContainerAware (comme une manette de jeu) :

191voto

Matthieu Points 1124

Avec la brindille :``

48voto

supernova Points 304

Je pense que c’est la meilleure façon de le faire :

28voto

jsgoupil Points 982

Symfony 2.0-2.1
Utilisez ceci:

    $router = $this->get("router");
    $route = $router->match($this->getRequest()->getPathInfo());
    var_dump($route['_route']);

Que l'on va pas vous donner des _internal.

Mise à jour pour Symfony 2.2+: Ce n'est pas de travail de départ Symfony 2.2+. J'ai ouvert un bug et la réponse est "by design". Si vous souhaitez obtenir l'itinéraire dans un sous-action, vous devez passer comme un argument

{{ render(controller('YourBundle:Menu:menu', { '_locale': app.request.locale, 'route': app.request.attributes.get('_route') } )) }}

Et votre contrôleur:

public function menuAction($route) { ... }

21voto

K. Norbert Points 4797

Il n’y a pas de solution que fonctionne pour tous les cas d’utilisation. Si vous utilisez le $request -> méthode de get('_route'), ou ses variantes, elle retournera « _internal » pour les cas où le transfert a eu lieu.

Si vous avez besoin d’une solution qui fonctionne même avec redirection, vous devez utiliser le nouveau service RequestStack, qui est arrivé à 2.4, mais que cela briserait ESI:

Vous pouvez faire une extension de brindille de cela si vous en avez besoin dans les modèles.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X