Как узнать текущий маршрут в Symfony 2? - PullRequest
213 голосов
/ 17 августа 2011

Как мне получить текущий маршрут в Symfony 2?

Например, routing.yml:

somePage:
   pattern: /page/
   defaults: { _controller: "AcmeBundle:Test:index" }

Как я могу получить это somePage значение?

Ответы [ 13 ]

1 голос
/ 04 февраля 2017

Чтобы получить текущий маршрут на основе URL (более надежный в случае пересылки):

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;
}
0 голосов
/ 03 мая 2019

В Symfony 4.2.7 я могу реализовать следующее в своем шаблоне ветки, который отображает имя пользовательского маршрута, которое я определил в своих контроллерах.

In index.html.twig

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

В моем контроллере


    ...

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

        ...
     }

Результат выводит "article_list" на нужную страницу в моем браузере.

0 голосов
/ 26 апреля 2016

, если вы хотите получить имя маршрута в вашем контроллере, чем вы должны внедрить запрос (вместо того, чтобы получать из контейнера из-за Symfony UPGRADE и затем вызывать get ('_ route').

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

если вы хотите получить название маршрута в ветке, чем вы должны получить его как

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