Symfony 路由中的可选前缀部分
我试图创建一个相当复杂的路由模式,但我被卡住了 我不想匹配的路线Symfony 路由中的可选前缀部分,symfony,Symfony,我试图创建一个相当复杂的路由模式,但我被卡住了 我不想匹配的路线 /books indexAction /books/show showAction /books/authorname indexAction /books/authorname/show showAction 当前设置 Routing.yml actions: resource: routing/actions.yml prefix: /books
/books indexAction
/books/show showAction
/books/authorname indexAction
/books/authorname/show showAction
当前设置
Routing.yml
actions:
resource: routing/actions.yml
prefix: /books/{authorname}
requirements:
authorname: ".*"
defaults:
authorname: ''
books_index:
path: ""
defaults: { _controller:bookController:indexAction }
books_show:
path: "/show"
defaults: { _controller:bookController:showAction }
路由/操作.yml
actions:
resource: routing/actions.yml
prefix: /books/{authorname}
requirements:
authorname: ".*"
defaults:
authorname: ''
books_index:
path: ""
defaults: { _controller:bookController:indexAction }
books_show:
path: "/show"
defaults: { _controller:bookController:showAction }
此设置当前仅匹配:
/books/ indexAction
/books/show showAction
/books/authorname indexAction
/books/authorname/show showAction
但不是
/books
我之所以将这些路由拆分为两个文件,是因为实际上这些操作包含更多路由,而且还有其他路由类别,而不是操作
我知道我可以在没有前缀的情况下手动定义/books路由,但我希望避免这种情况,因为此模式将用于许多不同的模块。在任何情况下,您都需要
/book
前缀
一种解决方案是在routing.yml
中为此定义单独的条目。一个带有/books
前缀,第二个带有/books/{authorname}
index:
resource: routing/actions.yml
prefix: /books
show:
resource: routing/actions.yml
prefix: /books/{authorname}
它不是那么优雅,但在这种情况下,您可以去掉额外的要求
部分
希望这有帮助 谢谢你,你做得很好。