我正在使用Symfony 2.3.5创建一个应用程序来管理我的音乐。 我在配置路线方面遇到了一些问题。
我想创建3条路线:
/music/mickael_jackson
/music/mickael_jackson/edit
/music/mickael_jackson/thriller
正如您所显示的,“编辑艺术家”和“显示专辑”的路线之间会发生冲突:“编辑艺术家”被视为“显示专辑路线”并给我找不到404。
我正在尝试使用正则表达式从路线“显示专辑”中排除关键字edit
和delete
。
我在这里找到了一个:A regular expression to exclude a word/string(接受了一些改动的答案),但它不起作用,我有一个错误,因为我的路线'显示专辑'与正则表达式不匹配。
例外:
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}
* )
我找不到配置中的错误。
感谢您的帮助。
答案 0 :(得分:4)
使用此模式^(?!.*(edit|delete)$).*
我也不知道交响乐
答案 1 :(得分:0)
删除正斜杠,
* requirements={"nameCanonical" = "^(?!edit|delete)$"},
因为它已经包含在您的总路径中。
否则,正则表达式对我来说没问题;干得好,自己找答案。大多数刚接触正则表达式的人都无法应用外观断言。
答案 2 :(得分:0)
在“显示专辑”路线前移动“编辑艺术家”路线。 当然,您将无法使用“编辑”作为专辑的名称,但我想您可以使用它。