249 Stimmen

Wie erhält man die aktuelle Route in Symfony 2?

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?

11voto

Tom Tom Punkte 3638

_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.

10voto

Venkat Kotra Punkte 9745
$request->attributes->get('_route');

Sie können den Routennamen aus dem Request-Objekt innerhalb des Controllers abrufen.

4voto

alexismorin Punkte 729

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();

2voto

Aderemi Dayo Punkte 697

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.
?>

2voto

Muhammad Shahzad Punkte 8494

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.com

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.

Powered by:

X