Двигатель шаблонов ветки: получить текущий URL -адрес

StackOverflow https://stackoverflow.com/questions/9339370

  •  27-10-2019
  •  | 
  •  

Вопрос

Как я могу получить текущий URL из шаблона ветки?

Я использую Twig с PHP, без какой -либо другой структуры.

Это было полезно?

Решение

Поиск текущего URL

Текущий URL -адрес поставляется вашим веб -сервером и записывается на $_SERVER супер-глобальный. Запустите этот маленький сценарий, <?php echo '<pre>'; print_r($_SERVER);, через ваш сервер и корни, чтобы найти значение (ы), которые вы ищете.

Связанные вопросы по этому вопросу:

Руководство PHP описывает природу доступных $_SERVER ценности здесь.

Получение URL в ветке

После того, как у вас есть URL, вам нужно передать его как переменную шаблона при вызове render(...) На экземпляре шаблона ветки. Например, вы можете кодировать это.

$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, поскольку они делятся классом запроса (я не тестировал):

{{ 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'];

Затем в своем шаблоне ветки вы можете сделать

{{ app.current_url }}

Дайте мне знать, какова линия ботома этого метода.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top