Я пытаюсь создать расширение для визуализации разбиения на страницы. Она нуждается в запрос и маршрутизатор, чтобы иметь возможность создать URL, так что я сделал это:Как вставить стек запроса в расширение веточки
services.yml:
app.twig_extension:
class: MyBundle\Twig\MyExtension
public: false
calls:
- [setRequest, [@request_stack]]
- [setRouter, [@router]]
tags:
- { name: twig.extension }
Тогда в моем расширения:
private $router;
private $request;
public function setRouter(UrlGeneratorInterface $router)
{
$this->router = $router;
}
public function setRequest(RequestStack $requestStack)
{
$this->request = $requestStack->getCurrentRequest();
}
...
public function renderPaginator(\Twig_Environment $twig, $paginator, array $options = array())
{
if (1 == $paginator->getNumPages())
{
return false;
}
var_dump($this->request);
die();
Оказывается, что var_dump печатает нуль. Хотя, если я делаю этот var_dump в методе setRequest, он фактически печатает объект Request. Любая идея? Благодаря!
Я попытался, но получил «Вызов функции-члена getCurrentRequest() для ошибки, не связанной с объектом». Я изменил метод setRequestStack, и если я делаю var_dump ($ this-> requestStack) по методу paginator, я получил null. Я использую symfony 2.6 btw – petekaner
Проверьте измененное определение службы. На самом деле вы, вероятно, даже должны делать инъекцию конструктора вместо инъекции сеттера, чтобы избежать таких проблем. – Gerry
Mmm no, не работает либо «Аргумент 1, переданный в SeoReportBundle \ Twig \ SeoReportExtension :: __ construct() должен быть экземпляром Symfony \ Component \ HttpFoundation \ RequestStack, не указан« – petekaner