получить текущий url в шаблоне twig?

Я просмотрел код, чтобы получить текущий путь в шаблоне Twig (а не полный URL), то есть я не хочу http://www.sitename.com/page , мне нужна только /page .

     {{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }} 

    Если вы хотите прочитать его в переменной вида:

     {% set currentPath = path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) %} 

    В переменной глобального представления app содержатся всевозможные полезные ярлыки, такие как app.session и app.security.token.user , которые ссылаются на службы, которые вы можете использовать в controllerе.

    Получить текущий URL : {{ app.request.uri }} в Symfony 2.3, 3, 4


    Получить только путь : {{ app.request.pathinfo }}

    В symfony 2.1 вы можете использовать это:

     {{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')) }} 

    В symfony 2.0 одно решение состоит в том, чтобы написать расширение ветки для этого

     public function getFunctions() { return array( 'my_router_params' => new \Twig_Function_Method($this, 'routerParams'), ); } /** * Emulating the symfony 2.1.x $request->attributes->get('_route_params') feature. * Code based on PagerfantaBundle's twig extension. */ public function routerParams() { $router = $this->container->get('router'); $request = $this->container->get('request'); $routeName = $request->attributes->get('_route'); $routeParams = $request->query->all(); foreach ($router->getRouteCollection()->get($routeName)->compile()->getVariables() as $variable) { $routeParams[$variable] = $request->attributes->get($variable); } return $routeParams; } 

    И используйте так

     {{ path(app.request.attributes.get('_route'), my_router_params()|merge({'additional': 'value'}) }} 

    Вам не нужно все это, если вы не хотите добавлять дополнительные параметры к своим ссылкам, например, в пейджер, или вы хотите изменить один из параметров.

    Вы можете получить текущий URL-адрес в Twig следующим образом:

     {{ app.request.schemeAndHttpHost ~ app.request.requestUri }} 

    Следует отметить, что если у вас есть дополнительные параметры запроса в вашем URL-адресе, которые не являются частью настроенного маршрута, принятый ответ не будет включать их в текущий URL-адрес (путь).

    Зачем вам нужны дополнительные параметры?

    Например, если у вас есть страница списка с записями, которые можно фильтровать по ключевым словам, а страница имеет разбивку на страницы, скорее всего, переменные запроса для «ключевого слова» и «страницы» не будут в вашем маршруте. Но в ваших прямых и обратных кнопках для подкачки вам нужен полный текущий URL-адрес (который содержит ключевые слова, поэтому следующая страница все еще фильтруется). И вам нужно изменить переменную страницы.

    Как слить лишние параметры запроса

    Таким образом, вы можете получить текущий маршрут и объединить дополнительные переменные (после изменения одной или нескольких дополнительных переменных). Обратите внимание, что вы объединяетесь в свои собственные переменные в app.request.query.all , а затем объединяете этот массив в app.request.attributes.get('_route_params') . Метод path() требует, чтобы вы предоставили все необходимые параметры маршрута, поэтому вам необходимо включить _route_params .

    {{ path(app.request.attributes.get('_route'), app.request.attributes.get('_route_params')|merge(app.request.query.all|merge({'page': 2 }))) }}

    Это действительно уродливо, но если вы разрабатываете разбивку на страницы, вам нужно будет изменить переменную страницы на каждой отдельной ссылке, поэтому каждый раз нужно включать все это. Возможно, у других есть лучшее решение.

    Если вы используете Silex 2, вы больше не сможете получить доступ к объекту Request.

    Таким образом вы можете получить доступ к текущим атрибутам запроса.

     app.request_stack.currentrequest.attributes.get('_route') 

    И для создания полного URL-адреса URL: path(app.request_stack.currentrequest.attributes.get('_route'), app.request_stack.currentrequest.attributes.get('_route_params'))

    Interesting Posts

    Как реализовать контроль доступа на основе разрешения с помощью ядра Asp.Net

    Как перенести текущее активное окно с одного монитора на другой с помощью сочетания клавиш?

    Передайте текущую команду на съемный сеанс (tmux / screen)

    Как вы совместно используете код между проектами / решениями в Visual Studio?

    Сохранить несколько макетов гнома-терминала?

    Не удалось загрузить общую библиотеку JNI при запуске Eclipse

    Lossless JPEG Rotate (90/180/270 gradleусов) в Java?

    Почему постоянная всегда выпадает из большого анализа O?

    Выполнение вложений и обновлений с помощью Dapper

    objective C – Как использовать метод initWithCoder?

    Как нам получить отдельную запись, когда / устарел в версии 2.4?

    dplyr на data.table, я действительно использую data.table?

    Интерфейсы против абстрактных classов

    Объект 4.1 Обновление существующего родительского объекта с новыми дочерними объектами

    Почему ping удастся, но nmap терпит неудачу?

    Давайте будем гением компьютера.