我尝试在我的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-Container实例化控制器时,它可以工作:$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错误,并显示以下消息:
控制器“company.affiliate_api_controller:adblock”用于URI “/api/1.0/admin/affiliate/adblock”不可调用。 500内部 服务器错误 - InvalidArgumentException
这里有什么问题?
答案 0 :(得分:3)
尝试使用后缀defaults
在routing.yml
中声明Action
:
affiliate_api_get_adblock:
path: /api/1.0/admin/affiliate/adblock
defaults: { _controller: company.affiliate_api_controller:adblockAction }