Symfony 2.8注入RequestStack错误

时间:2017-01-18 10:15:41

标签: symfony

我在注入RequestStack时遇到问题。

在这种情况下,如果我只使用请求,一切都很好:

<?php

namespace Cms\AdminBundle\Controller;

use Symfony\Component\HttpFoundation\Request;

...
class DefaultController extends BaseController {
    public function mainAction(Request $request) {
...

但如果我尝试使用RequestStack,我会收到错误 &#34; Controller&#34; Cms \ AdminBundle \ Controller \ DefaultController :: mainAction()&#34;要求您为&#34; $ requestStack&#34;提供值。参数(因为没有默认值或因为在此之后存在非可选参数)。&#34;

这是代码:     

namespace Cms\AdminBundle\Controller;

use Symfony\Component\HttpFoundation\RequestStack;

...
class DefaultController extends BaseController {
    public function mainAction(RequestStack $requestStack) {
...

谢谢!

1 个答案:

答案 0 :(得分:2)

根据Symfony文档:

  

例如,在控制器中,不要注入请求堆栈,而是在操作方法参数上使用Request type-hint。

RequestStack是一项服务,但Request是无法从容器访问的值对象(不是服务)。

因此,如果您在控制器中需要request_stack,您可以从容器中获取它:

$requestStack = $this->get('request_stack');

或者只是将它注入控制器构造函数(如果你的控制器是服务)。