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?

1voto

Alain Tiemblo Punkte 34390

Um die aktuelle Route anhand der URL zu ermitteln (zuverlässiger bei Weiterleitungen):

public function getCurrentRoute(Request $request)
{
    $pathInfo    = $request->getPathInfo();
    $routeParams = $this->router->match($pathInfo);
    $routeName   = $routeParams['_route'];
    if (substr($routeName, 0, 1) === '_') {
        return;
    }
    unset($routeParams['_route']);

    $data = [
        'name'   => $routeName,
        'params' => $routeParams,
    ];

    return $data;
}

0voto

klewis Punkte 6513

Mit Symfony 4.2.7 bin ich in der Lage, das Folgende in meinem Twig-Template zu implementieren, das den benutzerdefinierten Routennamen anzeigt, den ich in meinem/ihren Controller(n) definiert habe.

In index.html.twig

<div class="col">
    {% set current_path =  app.request.get('_route') %}
    {{ current_path }}
</div>

In meinem Controller

    ...

    class ArticleController extends AbstractController {
        /**
         * @Route("/", name="article_list")
         * @Method({"GET"})
         */
        public function index() {
        ...
        }

        ...
     }

Das Ergebnis gibt "article_list" auf der gewünschten Seite in meinem Browser aus.

-2voto

Vazgen Manukyan Punkte 1330

Wenn Sie den Routennamen in Ihrem Controller abrufen möchten, müssen Sie die Anfrage injizieren (anstatt sie vom Container zu erhalten, da Symfony UPGRADE und dann get('_route') aufrufen.

public function indexAction(Request $request)
{
    $routeName = $request->get('_route');
}

Wenn Sie den Routennamen in Twig erhalten möchten, müssen Sie ihn wie folgt erhalten

{{ app.request.attributes.get('_route') }}

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