Symfony4 路由参数顺序

Symfony4 route param order

我有 1 个 slug、2 个整数(类别、页面)的路由:

@Route("/articles-{categorySlug}-{category}-{page}", name="article.list.category", defaults={"page": 1}, requirements={"category": "\d+", "page": "\d+", "categorySlug": "[0-9a-zA-Z\/\-]*"})

干得好:

Url: /articles-categorySlug-5
结果:categorySlug:categorySlug,类别:5,页面:1(默认)

糟糕的工作(修复):

Url: /articles-categorySlug-5-2
结果:categorySlug: categorySlug, category: 2 (should be 5), page: 1 (should be 2)

我该如何解决?

这是因为类别 slug 正则表达式是贪婪的。添加尾随 ? 使其不贪心:

@Route("/articles-{categorySlug}-{category}-{page}", name="article.list.category", defaults={"page": 1}, requirements={"category": "\d+", "page": "\d+", "categorySlug": "[0-9a-zA-Z\/\-]*?"})