5

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

我想创建 3 条路线:

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

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

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

我在这里找到了一个:A regular expression to exclude a word/string (Accepted answer with a little change),但它不起作用,我有一个错误,因为我的路线“显示专辑”与正则表达式不匹配。

例外 :

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. 

我的路线:

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

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

感谢帮助。

4

3 回答 3

4

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

于 2013-10-09T17:29:00.633 回答
0

删除正斜杠,

*         requirements={"nameCanonical" = "^(?!edit|delete)$"},

因为它已经包含在您的总路径中。

否则,正则表达式对我来说看起来不错;干得好,自己找到答案。大多数刚接触正则表达式的人在应用环视断言时遇到了麻烦。

于 2013-10-09T16:42:08.083 回答
0

Just move your "Edit artist" route before "Show Album" route. Of course, you won't be able to use "edit" as a name of an album, but I suppose you can live with that.

于 2017-09-19T13:21:14.120 回答