Как получить текущий URL-адрес из шаблона Twig?
Я использую Twig с PHP, без каких-либо других фреймворков.
Поиск текущего URL-адреса
Текущий URL-адрес предоставляется вашим веб-сервером и записывается в супер-глобальный $_SERVER
. Запустите этот небольшой скрипт, <?php echo '<pre>'; print_r($_SERVER);
<?php echo '<pre>'; print_r($_SERVER);
, через ваш сервер и корень, чтобы найти значения, которые вы ищете.
Связанные вопросы по этому вопросу:
В руководстве по PHP описывается характер доступных значений $_SERVER
здесь .
Получение URL-адреса в TWIG
После URL-адреса вам нужно передать его как переменную шаблона при вызове render(...)
в экземпляре шаблона Twig. Например, вы можете закодировать это.
$current_url = // figure out what the current url is // pass the current URL as a variable to the template echo $template->render(array('current_url' => $current_url));
Чтобы использовать переменную в шаблоне, используйте синтаксис {{ variable_name }}
.
Следующие действия выполняются в Silex и, безусловно, в Symfony2, поскольку они разделяют класс Request (я не тестировал):
{{ app.request.getRequestUri() }}
Перейти http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
или: {{ app.request.getUri() }}
для полного Uri.
Помните, что в настоящий момент вы должны использовать Symfony\Component\HttpFoundation\RequestStack
.
См. http://symfony.com/blog/new-in-symfony-2-4-the-request-stack .
Начиная с Symfony 2.4 наилучшей практикой является никогда не вводить службу запроса, а вместо этого вводить службу request_stack […]
Поэтому в приложении Silex это может быть достигнуто с помощью:
app.request_stack.getCurrentRequest.getUri
Здесь что-то я нашел, чтобы сделать его общим с платформой sliex. Я думаю, что мое решение не идеально, но оно выполняется.
в вашем PHP-коде добавьте этот код:
$app = new Silex\Application(); // add the current url to the app object. $app['current_url'] = $_SERVER['REQUEST_URI'];
Затем в вашем шаблоне Twig вы можете сделать
{{ app.current_url }}
Дайте мне знать, какова линия бота этого метода.