如何強制要求路由中的參數是字符串?Symfony路由參數要求限制
鑑於路線
my_foobar_route: 網址:/例子/路由/:S1 /:ID 要求:{ID:\ d +}
誰能提醒我如何強制PARAM S1到是一個字符串?
如何強制要求路由中的參數是字符串?Symfony路由參數要求限制
鑑於路線
my_foobar_route: 網址:/例子/路由/:S1 /:ID 要求:{ID:\ d +}
誰能提醒我如何強制PARAM S1到是一個字符串?
你只需要提供一個合適的正則表達式:
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[a-zA-Z]+"
編輯:圍繞第二個正規表達式加引號; YAML將[...]
解釋爲一組參數。由於@chiborg :-)
幾乎所有通過url傳遞的信息都是一個字符串 - 任何要求都比這更強,你不需要做任何事情,你的參數已經是一個字符串。也許你想要一個特殊格式的字符串?
如果你不在乎什麼字符串包含或者如果你事先不知道它會包含,請嘗試以下操作:
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[^/]+"
這將允許除所有字符'/'字符,用作參數的分隔符。使用表達式
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[^/]{3,}"
您可以強制字符串長度至少爲三個字符。
不要忘了把帶方括號的正則表達式放在引號中!如果您忘記了它們,則路由的YAML解析器會將它們解釋爲數組表達式。
只有在將正則表達式放在引號中後,這纔會起作用。 – chiborg 2011-05-26 08:32:50
編輯,謝謝。總是忘記被解釋爲YAML數組的'[]',我通常在路由中使用的正則表達式總是以'\ d +';-)結尾 – richsage 2011-05-26 09:21:40