Wie erhalte ich die aktuelle Route in Symfony 2?
Zum Beispiel, routing.yml
:
somePage:
pattern: /page/
defaults: { _controller: "AcmeBundle:Test:index" }
Wie kann ich das bekommen? somePage
Wert?
Wie erhalte ich die aktuelle Route in Symfony 2?
Zum Beispiel, routing.yml
:
somePage:
pattern: /page/
defaults: { _controller: "AcmeBundle:Test:index" }
Wie kann ich das bekommen? somePage
Wert?
Symfony 2.0-2.1
Verwenden Sie dies:
$router = $this->get("router");
$route = $router->match($this->getRequest()->getPathInfo());
var_dump($route['_route']);
Diese wird pas Sie erhalten _internal
.
Update für Symfony 2.2+: Dies funktioniert nicht ab Symfony 2.2+. Ich öffnete eine Fehler und die Antwort lautete "absichtlich". Wenn Sie die Route in einer Unteraktion erhalten möchten, müssen Sie sie als Argument übergeben
{{ render(controller('YourBundle:Menu:menu', { '_locale': app.request.locale, 'route': app.request.attributes.get('_route') } )) }}
Und Ihr Controller:
public function menuAction($route) { ... }
Es gibt keine Lösung, die für alle Anwendungsfälle geeignet ist. Wenn Sie die Methode $request->get('_route') oder ihre Varianten verwenden, es wird '_intern' zurückgegeben für Fälle, in denen eine Weiterleitung stattgefunden hat.
Wenn Sie eine Lösung benötigen, die auch mit Weiterleitung funktioniert, müssen Sie den neuen RequestStack-Dienst verwenden, der in 2.4 erschienen ist, aber das wird kaputtgehen ESI-Unterstützung :
$requestStack = $container->get('request_stack');
$masterRequest = $requestStack->getMasterRequest(); // this is the call that breaks ESI
if ($masterRequest) {
echo $masterRequest->attributes->get('_route');
}
Sie können daraus eine Zweigverlängerung machen, wenn Sie sie in Vorlagen benötigen.
CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.