【发布时间】:2018-07-26 10:36:51
【问题描述】:
我正在向 Symfony 2.7 应用程序添加一个功能。我有一个被定义为服务的控制器,它又接收另一个服务。以下是我的 services.yml 文件中的相关内容:
app.service.video_derivative:
class: MyCompany\AppBundle\Service\VideoDerivativeService
arguments:
- "@app.repository.video_derivative"
- "@doctrine.orm.default_entity_manager"
api.controller.video_derivative:
class: MyCompany\AppBundle\Controller\VideoDerivativeController
arguments:
- "@app.service.video_derivative"
...我的控制器中的相关代码如下所示:
public function __construct(VideoDerivativeServiceInterface $videoDerivativeService)
{
$this->videoDerivativeService = $videoDerivativeService;
}
/**
* @param $id
* @return JsonResponse
*
* @Route("/admin/video-derivative/create-by-clip-id/{id}", name="create_clip_by_id")
*/
public function byClipIdAction($id)
{
$responseArray = [
'foo' => 'bar',
'baz' => 'qux',
];
return new JsonResponse($responseArray);
}
...但是当我在浏览器中打开我的控制器时,我收到以下消息:
可捕获的致命错误:参数 1 传递给 MyCompany\AppBundle\Controller\VideoDerivativeController::__construct() 必须是一个实例 MyCompany\AppBundle\Service\VideoDerivativeServiceInterface,没有给出, 在第 2200 行调用 /usr/src/app/app/cache/dev/classes.php 和 定义
...所以看起来我做错了什么。你将如何调试这个?
【问题讨论】:
-
看起来 VideoDerivativeService 没有实现 VideoDerivativeServiceInterface。
-
显示你的路线
-
谢谢。我已经添加了。
标签: php symfony service dependency-injection controller