Как получить текущий URL-адрес из шаблона Twig?
Я использую Twig с PHP, без каких-либо других фреймворков.
Как получить текущий URL-адрес из шаблона Twig?
Я использую Twig с PHP, без каких-либо других фреймворков.
Поиск текущего URL
Текущий URL-адрес предоставляется вашим веб-сервером и записывается в супер-глобальный $_SERVER
. Запустите этот небольшой script, <?php echo '<pre>'; print_r($_SERVER);
через свой сервер и выполните команду root, чтобы найти нужные вам значения.
Похожие вопросы на эту тему:
В руководстве по 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() }}
Go 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 Framework. Я думаю, что мое решение не идеально, но оно выполняет свою работу.
в вашем PHP-коде добавьте этот код:
$app = new Silex\Application();
// add the current url to the app object.
$app['current_url'] = $_SERVER['REQUEST_URI'];
Затем в вашем шаблоне Twig вы можете сделать
{{ app.current_url }}
Позвольте мне знать, что такое линия бота этого метода.