【问题标题】:Symfony2: routing with controller as a service not workingSymfony2:使用控制器路由作为服务不起作用
【发布时间】: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

这里有什么问题?

【问题讨论】:

    标签: php symfony


    【解决方案1】:

    尝试在您的routing.yml 中声明defaults,并带有后缀Action

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-06-10
      • 2016-12-14
      • 1970-01-01
      • 2018-06-11
      相关资源
      最近更新 更多