当我使用注释路由类型和子目录时,为什么Symfony会生成2条路由?

时间:2018-06-21 15:24:48

标签: symfony routing symfony4

我将symfony 4和注释类型用于路线。
我的Admin目录中有一个Controller目录。
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”为管理控制器设置前缀,但我不喜欢这种方法。这意味着每个控制器都需要此配置。

1 个答案:

答案 0 :(得分:1)

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