[英]constructor injection in symfony
我想在构造函数中使用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;
}
}
根据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
只是为经验不足的开发人员添加它;-)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.