路由正则表达式要求:排除特定单词

Elo*_*fin 5 regex routing symfony

我正在使用 Symfony 2.3.5 创建一个应用程序来管理我的音乐。我在配置路由时遇到了一些问题。

我想创建 3 条路线:

  • 表演艺术家: /music/mickael_jackson
  • 编辑艺术家: /music/mickael_jackson/edit
  • 显示专辑: /music/mickael_jackson/thriller

正如您所展示的,“编辑艺术家”和“显示专辑”的路线之间将存在冲突:“编辑艺术家”被捕获为“显示专辑路线”,并给我一个 404 未找到。

我正在尝试使用正则表达式来排除关键字editdelete路线“显示专辑”。

我在这里找到了一个:用于排除单词/字符串的正则表达式(接受的答案略有变化),但它不起作用,我有一个错误,因为我的路线“显示专辑”与正则表达式不匹配。

例外 :

An exception has been thrown during the rendering of a template ("Parameter "nameCanonical" for route "corum_music_album_show" must match "/(?!edit|delete)" ("beneath_the_encasing_of_ashes" given) to generate a corresponding URL.") in CorumMusicBundle:Artist:show.html.twig at line 36. 
Run Code Online (Sandbox Code Playgroud)

我的路线:

* @Route(
*         "{artistNameCanonical}/{nameCanonical}",
*         name = "corum_music_album_show",
*         requirements={"nameCanonical" = "^/(?!edit|delete)$"},
*         options = {"expose"=true}
* )
Run Code Online (Sandbox Code Playgroud)

我找不到配置中有什么问题。

感谢帮助。

alp*_*avo 4

使用这个模式^(?!.*(edit|delete)$).* 我也不知道 Symfony