我试图创建一个扩展来呈现分页。它需要的要求,并能够创建网址的路由器,所以我这样做:如何将请求堆栈注入一个树枝分机
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打印出null。尽管如果我在setRequest方法中执行var_dump,它实际上会打印一个Request对象。 有什么想法?谢谢!
我试过了,但我得到了“调用成员函数getCurrentRequest()在非对象”错误。我改变了setRequestStack方法,如果我在paginator方法中执行了var_dump($ this-> requestStack),我得到了null。我正在使用symfony 2.6 btw – petekaner 2015-02-23 11:44:47
检查修改的服务定义。实际上,你甚至应该做构造函数注入而不是setter注入来避免这些问题。 – Gerry 2015-02-23 11:48:15
嗯,不起作用“参数1传递给SeoReportBundle \ Twig \ SeoReportExtension :: __ construct()必须是Symfony \ Component \ HttpFoundation \ RequestStack的一个实例,没有给出” – petekaner 2015-02-23 12:27:25