Symfony2:使用控制器作为服务无法正常工作的路由

时间:2016-01-06 14:04:49

标签: php symfony

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

这里有什么问题?

1 个答案:

答案 0 :(得分:3)

尝试使用后缀defaultsrouting.yml中声明Action

affiliate_api_get_adblock:
    path:     /api/1.0/admin/affiliate/adblock
    defaults: { _controller: company.affiliate_api_controller:adblockAction }