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?
_route
ist nicht der richtige Weg und war nie der richtige Weg . Sie war immer für Debugging-Zwecke gedacht. so Fabien, der Symfony entwickelt hat. Es ist unzuverlässig, da es nicht mit Dingen wie Weiterleitung und anderen direkten Aufrufen von Controllern wie partiellem Rendering funktionieren wird.
Sie müssen den Namen Ihrer Route als Parameter in Ihren Controller einfügen, siehe das Dokument hier
Bitte verwenden Sie auch niemals $request->get('');
wenn Sie die Flexibilität nicht benötigen, ist es viel langsamer als die Verwendung von get auf die spezifische Eigenschaft Tasche, die Sie benötigen (Attribute, Abfrage oder Anfrage) so $request->attributes->get('_route');
in diesem Fall.
A _internal
Ich erhalte den Routennamen von innerhalb eines Controllers mit $this->getRequest()->get('_route').
Auch der von tuxedo25 vorgeschlagene Code liefert _internal
Dieser Code wird in dem ausgeführt, was in Symfony 1.X als "Komponente" bezeichnet wurde; nicht der Controller einer Seite, sondern ein Teil einer Seite, die eine gewisse Logik benötigt.
Der entsprechende Code in Symfony 1.X ist: sfContext::getInstance()->getRouting()->getCurrentRouteName();
Für alle, die eine aktuelle Route für Symfony 3 benötigen, verwende ich Folgendes
<?php
$request = $this->container->get('router.request_context');
//Assuming you are on user registration page like https://www.yoursite.com/user/registration
$scheme = $request->getScheme(); //This will return https
$host = $request->getHost(); // This will return www.yoursite.com
$route = $request->getPathInfo(); // This will return user/registration(don't forget this is registrationAction in userController
$name = $request->get('_route'); // This will return the name.
?>
Mit Symfony 3.3, habe ich diese Methode verwendet und funktioniert gut.
Ich habe 4 Routen wie
admin_kategorie_index, admin_kategorie_deta admin_kategorie_aktualisieren
Und nur eine Zeile macht eine aktive Klasse für alle Routen.
<li {% if app.request.get('_route') starts with 'admin_category' %} class="active"{% endif %}>
<a href="{{ path('admin_category_index') }}">Product Categoires</a>
</li>
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.