Как я могу получить текущий URL-адрес из шаблона Twig?Twig templates engine: получить текущий url
Я использую Twig с PHP, без каких-либо других фреймворков.
Как я могу получить текущий URL-адрес из шаблона Twig?Twig templates engine: получить текущий url
Я использую Twig с PHP, без каких-либо других фреймворков.
Поиск текущего URL
Текущий URL поставляется на веб-сервер и записывается в $_SERVER
супер-глобальной. Запустите этот небольшой скрипт, <?php echo '<pre>'; print_r($_SERVER);
, через свой сервер и откорректируйте его, чтобы найти нужные вам значения.
Похожие вопросы по этой теме:
The PHP manual describes the nature of the available $_SERVER
values here.
Получение URL в веточку
После вас есть 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 }}
.
Интересно, есть ли какой-либо внутренний инструмент (метод переменной ot), чтобы получить URL-адрес от Twig? – nKognito
Вы можете найти код, уже написанный для этой цели, но получение текущего URL-адреса не входит в рамки механизма шаблонов, поэтому я очень сомневаюсь, что у Twig есть что-то встроенное. Я, конечно, ничего не нашел. – erisco
Здесь что-то я нашел, чтобы сделать его общим с помощью 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 }}
Позвольте мне знать, что является ботом линия этого метода.
следующие работы в Silex и, безусловно, в Symfony2, поскольку они разделяют класс запроса (я не проверял, хотя):
{{ app.request.getRequestUri() }}
'{{app.request.requestUri}}' – eightyfive
Еще лучше, да. – neemzy
Это устарело, его не следует использовать. https://github.com/silexphp/Silex/issues/1257#issuecomment-141058724 – Tieme
Go http://api.symfony.com/2.3/Symfony/Component/HttpFoundation/Request.html
или: {{ app.request.getUri() }}
для полного Ури.
Помните, что в настоящий момент вы должны использовать 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
Почему бы не передать текущий URL-адрес в качестве переменной шаблона? Или вы можете написать тег шаблона, который выводит URL-адрес. –