【发布时间】:2016-11-23 17:31:08
【问题描述】:
我想减少重复代码的数量并在我的 Drupal 8 应用程序中提供一个规范的 URL。由于路由系统是基于 Symfony 构建的,所以我将其包含在标题中。
我正在 mymodule.routing.yml 文件中的路由下构建路径。我想匹配第一个参数中指定数量的不同字符串,以及第二个参数中可以是任何字符串的 slug。它看起来像这样:
entity.my_entity.canonical:
path: '/{type}/{slug}'
defaults:
_controller: '\namespace\PostController::show'
requirements:
_permission: 'perm'
type: different|strings|that|can|match|
现在,当我尝试使用例如/match/some-slug 访问时,它只会显示“找不到页面”。
如果我的路径是静态的,例如path: '/j/{type}/{slug}',那么当我在浏览器中打开/j/match/some-slug 时它会按预期工作。
我的老板不喜欢 URL 中任何不必要的字符,所以我想通过使用两个参数来实现这一点,如第一个示例所示。
【问题讨论】:
-
确保没有其他路径可能与之冲突,因为它完全可能。
-
我怎么知道?如果另一个路径也有两个参数,或者只有参数名称相同,是否会被认为是冲突?
-
使用
php bin/console debug:router来调试你定义的路由,同时检查顺序