我想在我的构造函数中使用 Request 类,这是我想运行服务器时它给我的错误:
无法自动装配服务“AppBundle\Controller\DetectServiceDetailController”:方法“__construct()”的参数“$request”引用类“Symfony\Component\HttpFoundation\Request”,但不存在这样的服务。它无法自动注册,因为它来自不同的根命名空间。
我的代码:
<?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;
}
}
Run Code Online (Sandbox Code Playgroud)
根据 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();
}
...
Run Code Online (Sandbox Code Playgroud)
就我而言,BaseController 扩展了 Controller,因此我不需要更新 services.yml,但如果这是独立服务,那么您需要将其添加到 services.yml 例如
services:
...
service_name:
class: AppBundle\Service\ServiceName
arguments:
- '@request_stack'
public: true
Run Code Online (Sandbox Code Playgroud)
只是为经验不足的开发人员添加它;-)