【发布时间】:2016-01-06 14:04:48
【问题描述】:
我尝试在我的 Symfony 2.7 项目中使用控制器作为服务。
这是我之前尝试服务之前的 routing.yml:
affiliate_api_get_adblock:
path: /api/1.0/admin/affiliate/adblock
defaults: { _controller: AffiliateBundle:AffiliateApi:adblock }
完美运行。它将路径路由到 AffiliateBundle 中的 AffiliateApiController 并执行 adblockAction-Method。
然后我创建了以下服务:
services:
company.affiliate_api_controller:
class: CompanyName\AffiliateBundle\Controller\AffiliateApiController
arguments:
- @doctrine.orm.entity_manager
当我想为每个 DI 容器实例化控制器时,它可以工作:$c = $this->get('company.affiliate_api_controller');
但是当我尝试使用 routing.yml 中的服务名而不是 Symfony 文档中描述的类名时,抛出的错误:
affiliate_api_get_adblock:
path: /api/1.0/admin/affiliate/adblock
defaults: { _controller: company.affiliate_api_controller:adblock }
然后请求此路由会发生 500 错误,并显示以下消息:
用于 URI 的控制器“company.affiliate_api_controller:adblock” “/api/1.0/admin/affiliate/adblock”不可调用。 500 内部 服务器错误 - InvalidArgumentException
这里有什么问题?
【问题讨论】: