我在注入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) {
...
谢谢!
答案 0 :(得分:2)
根据Symfony
文档:
例如,在控制器中,不要注入请求堆栈,而是在操作方法参数上使用Request type-hint。
RequestStack
是一项服务,但Request
是无法从容器访问的值对象(不是服务)。
因此,如果您在控制器中需要request_stack
,您可以从容器中获取它:
$requestStack = $this->get('request_stack');
或者只是将它注入控制器构造函数(如果你的控制器是服务)。