2013-10-09 76 views
4

我正在用Symfony 2.3.5創建一個應用程序來管理我的音樂。 我有一些問題來配置我的路線。路由正則表達式要求:排除特定詞

我要創建3條路線:

  • 展藝術家:/music/mickael_jackson
  • 編輯藝術家:/music/mickael_jackson/edit
  • 劇專輯:/music/mickael_jackson/thriller

正如你可以展示,將有'編輯藝術家'和'顯示專輯'之間的路線衝突:'編輯藝術家'被捕獲爲'顯示專輯路線'並給我找不到404。

我試圖使用正則表達式從路由'Show album'中排除關鍵字editdelete

我在這裏找到一個: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} 
*) 

我找不到什麼是錯的配置。

感謝您的幫助。

回答

3

使用這種模式^(?!.*(edit|delete)$).* 我不知道交響樂要麼

0

刪除斜槓,

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

,因爲它已經包含在你的總路徑。

否則,正則表達式對我來說看起來沒問題;好工作,自己找到答案。大多數新增到正則表達式的人在應用lookaround斷言時遇到了麻煩。

+0

感謝您的幫助,但我仍然有同樣的例外。正則表達式是我學習的最複雜的東西,它對我來說仍然是一個謎...... – Elorfin

+0

嗯,對不起,我對Symfony不夠了解,可以幫助你。儘管我已經提出了你的問題;希望別人能幫助你。 –

0

就在「劇專輯」路線移動你的「編輯藝術家」的路子。 當然,你將無法使用「編輯」作爲專輯的名字,但我想你可以忍受這一點。