Symfony2:使用控制器作为服务进行路由不起作用


Symfony2: routing with controller as a service not working

我尝试在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 }