为什么 Symfony 在我使用注解路由类型和子目录时生成 2 条路由?

Why Symfony generate 2 routes when I use annotation routing type and subdirectory?

我使用 symfony 4 和路由注释类型。
我的 Controller 目录中有一个 Admin 目录。
Controller 目录中,我有 3 个控制器和一些路由
在我的 Admin 目录中,我有 EmployeeController(以“/employee”为前缀并以 "employee_" 命名)和 3 条路线(索引、新建、编辑)

我的 annotations.yaml 文件如下所示:

admin:
    resource: ../../src/Controller/Admin/
    type: annotation
    prefix: /admin
    name_prefix: admin_
    trailing_slash_on_root: false

public:
    resource: ../../src/Controller/
    type: annotation
    trailing_slash_on_root: false

经过 bin/console debug:router 我有:

admin_employee_index       GET        ANY      ANY    /admin/employee/                   
admin_employee_new         GET|POST   ANY      ANY    /admin/employee/new                
admin_employee_edit        GET|POST   ANY      ANY    /admin/employee/{id}/edit          
employee_index             GET        ANY      ANY    /employee/                         
employee_new               GET|POST   ANY      ANY    /employee/new                      
employee_edit              GET|POST   ANY      ANY    /employee/{id}/edit                
dashboard_index            GET        ANY      ANY    /dashboard/{year}/{week}           
schedule_index             ANY        ANY      ANY    /schedule/{year}/{week}            
localization_index              ANY        ANY      ANY    /localization/{id}

是否可以排除已配置的控制器或目录? 因为 symfony 为同一个控制器生成 2 条路由。

当然我可以使用单个配置进行路由(在本例中为 public)并使用“/admin/employee”为管理控制器设置前缀,但我不喜欢这种方法。这意味着每个控制器都需要这个配置。

您不能从路由定义中排除目录。作为分离控制器的更好方法,您可以在 src 中创建 AdminController 目录并将所有管理控制器移到那里。