PHP模拟堆栈的进,php-如何将请求堆栈注入到树枝扩展中

我正在尝试创建扩展以呈现分页.它需要请求和路由器才能创建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会输出null.尽管如果我在setRequest方法中执行var_dump,则实际上会打印一个Request对象.

任何想法?谢谢!

解决方法:

构造树枝扩展时,堆栈中没有任何请求,该请求为空.

您应该延迟将请求从堆栈中检索到renderPaginator()方法.

服务定义:

app.twig_extension:

class: MyBundle\Twig\MyExtension

public: false

arguments: [@request_stack, @router]

tags:

- { name: twig.extension }

服务:

public function __construct(RequestStackInterface $requestStack, RouterInterface $router)

{

$this->requestStack = $requestStack;

$this->router = $router;

}

public function renderPaginator(\Twig_Environment $twig, $paginator, array $options = array())

{

if ( 1 == $paginator->getNumPages() )

{

return false;

}

var_dump($this->requestStack->getCurrentRequest());

die();

}

标签:symfony,request,php

来源: https://codeday.me/bug/20191028/1953916.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值