#twig
#веточка
Вопрос:
Необходимо получить URL-адрес в шаблоне.
Я пробовал использовать get.request.url, но он всегда возвращает пустое значение. Я пробовал get.request.attributes.get(‘_route’), и он всегда возвращает пустое значение. Поскольку я новичок в twig, я уверен, что мне не хватает чего-то довольно простого и простого.
Комментарии:
1. Какой фреймворк вы используете или используете twig standalone?
2. twig standalone; это заставляет меня думать, что мне нужно сделать часть этого на php, а затем использовать twig, но это совсем не ясно.
Ответ №1:
Поскольку вы работаете с twig
standalone, вам нужно будет передать информацию самостоятельно. Однако вы могли бы создать небольшой класс-оболочку, чтобы решить эту проблему за вас.
Request.php
class Request {
public function __construct() {}
public function get($key) {
return isset($_GET[$key]) ? $_GET[$key] : null;
}
public function post($key) {
return isset($_POST[$key]) ? $_POST[$key] : null;
}
public function url() {
$http = 'http'.(isset($_SERVER['HTTPS']) amp;amp; $_SERVER['HTTPS'] === 'on' ? 's': '');
return $http.'://'.$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI'];
}
}
И зарегистрируйте класс как глобальный в twig
:
<?php
require_once __DIR__.'/vendor/autoload.php';
$loader = new Twig_Loader_Filesystem(__DIR__.'/../views');
$twig = new Twig_Environment($loader);
$twig->addGlobal('request', new Request());
Теперь вы можете использовать свою обертку внутри twig
{{ request.url }}{# output current url #}
{{ request.get('variable') }}{# contents of $_GET['variable'] when set or null #}
{{ request.post('variable') }}{# contents of $_POST['variable'] when set or null #}
Комментарии:
1. Спасибо миллион! Очень полезно получить URL-адрес для моего приложения, и до сих пор не было никакой информации о том, как это сделать!