gpt4 book ai didi

php - symfony 中的构造函数注入(inject)

转载 作者:行者123 更新时间:2023-12-03 16:40:28 24 4
gpt4 key购买 nike

我想在我的构造函数中使用 Request 类,这是它在我想运行服务器时给我的错误:

Cannot autowire service "AppBundle\Controller\DetectServiceDetailController": argument "$request" of method "__construct()" references class "Symfony\Component\HttpFoundation\Request" but no such service exists. It cannot be auto-registered because it is from a different root namespace.



我的代码:
<?php

namespace AppBundle\Controller;

use Symfony\Component\HttpFoundation\Request;

class DetectServiceDetailController
{
public $request;

public function __construct(Request $request)
{
$this->request = $request;
$serviceType = $this->request->query->get('type');
return $serviceType;

}

}

最佳答案

根据 gp_sflover 的建议,这里是我在 Symfony 3.4 中使用的一段代码:

<?php

namespace AppBundle\Controller;

use Symfony\Bundle\FrameworkBundle\Controller\Controller;
use Symfony\Component\HttpFoundation\RequestStack;

class BaseController extends Controller
{
protected $request;

/**
* @param Symfony\Bundle\FrameworkBundle\Controller\Controller
*/
public function __construct(RequestStack $requestStack)
{
$this->request = $requestStack->getCurrentRequest();
}

...

在我的例子中,BaseController 扩展了 Controller,所以我不需要更新 services.yml,但如果这是独立服务,那么你需要将它添加到 services.yml,例如
services:
...
service_name:
class: AppBundle\Service\ServiceName
arguments:
- '@request_stack'
public: true

只需为经验不足的开发人员添加它;-)

关于php - symfony 中的构造函数注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49209713/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com