为什么 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
目录并将所有管理控制器移到那里。
我使用 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
目录并将所有管理控制器移到那里。