当前位置: 首页 > 知识库问答 >
问题:

如何将$request添加到构造方法中?

凌征
2023-03-14

我已经在这个类的construct方法中定义了Request。

/**
* @var Request
*/
protected $request;

public function __construct(Request $request)
{
    $this->request = $request;
}

现在,当我尝试在这样的函数中检索文章数据时:

public function postListsAction()
{
    dd($this->request->get("title"));
}

我得到以下错误:

无法自动连线服务“App\Controller\ListController”:方法“\uuu construct()”的参数“$request”引用类“Symfony\Component\HttpFoundation\request”,但不存在此类服务。

如何解决此问题?

共有3个答案

辛承志
2023-03-14

我认为问题在于您试图将请求作为服务注入构造函数中。你能试试下面的方法吗

use Symfony\Component\HttpFoundation\Request;


public function postListsAction(Request $request)
{

    dd($request->get("title"));
    // .....
}

Symfony文档:https://symfony.com/doc/4.3/controller.html#the-request-object-as-a-controller-argument

景稳
2023-03-14

可注入服务类被称为RequestStack,您可以通过调用getCurrentRequest

例如

namespace App\Managers;

use Symfony\Component\HttpFoundation\RequestStack;

class SomeManager
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function serviceMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
    }
}
令狐昂雄
2023-03-14

正如错误消息所说,您尝试注入的请求类没有声明为服务。请改用RequestStack:

namespace App\Newsletter;

use Symfony\Component\HttpFoundation\RequestStack;

class NewsletterManager
{
    protected $requestStack;

    public function __construct(RequestStack $requestStack)
    {
        $this->requestStack = $requestStack;
    }

    public function anyMethod()
    {
        $request = $this->requestStack->getCurrentRequest();
        // ... do something with the request
    }
}

当做

 类似资料:
  • 我想编写一个名为addNewPhone(Phone newPhone)的方法,将一个Phone添加到一个电话数组列表中; 电话类别: 车间类别: 主要类: 我知道我需要返回ArrayList,并且我需要在这个方法中接收Phone type对象,然后它应该返回ArrayList和一个新的phones,但我不知道为什么它不起作用。 Eclipse显示我符合的方法:“newPhone无法解析或未归档”。

  • “Bericht”对象的单独类文件的一部分(荷兰语表示消息,包含一个字符串和两个日期): 在我的主方法的某个地方,我从这个类中创建新对象: 方法“printberichten”迭代数组列表并打印所有消息 getBericht getter方法: 因此,如果我创建一个新对象,我之前的所有对象都应该显示在text Area中,但我似乎只创建了我的类的一个实例。 在命令“lijst.add(this)”

  • 我想排序卡,但不知道如何使用构造函数将不同的卡类型与实际变量int类型连接起来。 "将卡的类型设置为类卡中的final static字段,以便可以通过例如卡来调用它们。EFFECT_MONSTER" 不允许枚举。

  • 这是一个我从头制作的密码生成器,但我想添加一个构造函数,这样我就可以使用它进行调用,还需要创建另一个类来调用它。如果可能的话,我想在这个项目上得到一些帮助。所以我的程序基本上解释了如何生成随机数符号,大写和小写。我第一次创建密码生成器代码时,它工作得不太好,因为它给了我全大写,有时全小写,或者只是没有其他变量的符号,然后我编写了这段代码,告诉程序如果没有这个变量,在显示这些变量之前,它无法创建其他

  • 我想排序卡,但不知道如何使用构造函数将不同的卡类型与实际变量int类型连接起来。 “将卡的类型设置为类卡中的final static字段,以便可以通过例如Card.EFFECT_MONSTER调用它们。” 不允许使用枚举。

  • 问题内容: 我正在尝试将字符串添加到Java中的ArrayList中,但似乎无法正常工作。 目前,我有以下代码: 为什么会出现以下错误: 令牌““披萨””上的语法错误,请删除此令牌 令牌语法错误,构造放置错误 问题答案: 您必须在函数中使用,例如: 希望有所帮助

  • 我正在尝试在IntelliJ中设置一个简单的“Hello World”Spock测试--似乎无法启动。我做了以下工作: null 此时,我在单选按钮下面得到一个“Spock library not found in the Module”消息。这里没有建议的安装解决方案。是否需要对模块进行某种Maven设置?这对于Groovy设置是不必要的,因为它不需要Maven中的依赖项。

  • 问题内容: 我想使两个按钮看起来像按钮。只有当我使用actionlink的#ID来应用时,我才能实现此目的。我想为操作链接分配一个类,但是当我使用下面的代码时,出现一个错误,提示我缺少“}”。 这是我正在应用的样式: 这可行,我想我可以将另一个#ID添加到样式中,但想将样式应用于Class。 问题答案: 您必须使用字符,因为class是C#中的关键字。这是MSDN文档的链接