Symfony 4.4/FOSRest 2.8.5 不显示父类的路由

问题描述

父类

abstract class AbstractObjectRestController extends FOSRestController {

  /**
   *
   * @param ParamFetcher $params
   * @return \FOS\RestBundle\View\View
   */
  public function cgetAction(ParamFetcher $params)
  {
     // Get DB data and return View
  }
}

子类:

/**
  * Class RoleRestController
  * @package Abstrat\UsersBundle\Controller
  * @REST\RouteResource("Roles")
*/
class CertificateRestController extends AbstractObjectRestController {
 
  /**
   *
   * @REST\Post("/certificates/download/{certificateId}")
   * @throws Exception
   */
  public function downloadAction(Request $request,$certificateId)
  {
  }
}

PHP bin/console debug:router

app_certificate_certificaterest_download POST ANY ANY /certificates/download/{certificateId}                     App\Controller\Certificate\CertificateRestController::downloadAction()

问题是,即使 CertificateRestController 扩展了 AbstractObjectRestController 并且显示了 CertificateRestController 中定义的路由,但没有注册来自父类 (AbstractObjectRestController) 的路由

config/services.yml:

parameters:

services:
    # default configuration for services in *this* file
    _defaults:
        autowire: true      
        autoconfigure: true
        public: false

    App\Controller\:
        resource: '../src/Controller'
        tags: [ 'controller.service_arguments' ]

    # Data fixtures
    App\DataFixtures\:
        resource: '../src/DataFixtures'
        tags: [ 'doctrine.fixture.orm' ]

config/routes.yml:

Users:
  type : rest
  resource: "@Usersbundle/Resources/config/routing.yml"

OAuth:
  type : rest
  resource: "@OauthBundle/Resources/config/routing.yml"

奇怪的是,UsersBundle 和 OauthBundle 都有扩展 AbstractObjectRestController 的 rest 控制器(如上所述),并且 cgetAction 方法正在针对这些控制器注册

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)