我尝试在Symfony 2.7项目中将控制器作为一项服务。
这是我以前的路线。yml在我尝试服务之前:
affiliate_api_get_adblock:
path: /api/1.0/admin/affiliate/adblock
defaults: { _controller: AffiliateBundle:AffiliateApi:adblock }
它工作得很好。它将路径路由到AffiliateBundle中的AffiliateApiController,并执行adblockAction方法。
然后我创建了以下服务:
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/associate/adblock"不可调用。500内部服务器错误-InvalidArgumentException
这里怎么了?
尝试在routing.yml
中用后缀Action
:声明defaults
affiliate_api_get_adblock:
path: /api/1.0/admin/affiliate/adblock
defaults: { _controller: company.affiliate_api_controller:adblockAction }