如何强制要求路由中的参数为字符串?
鉴于路线
my_foobar_route:url:/ example/routing /:s1 /:id要求:{id:\ d +}
任何人都可以提醒我如何强制param s1成为一个字符串?
ric*_*age 14
您只需要提供合适的正则表达式:
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[a-zA-Z]+"
Run Code Online (Sandbox Code Playgroud)
编辑:在第二个正则表达式周围添加引号; YAML将其解释[...]为一组参数.谢谢@chiborg :-)
如果您不关心字符串包含什么,或者如果您事先不知道它将包含什么,请尝试以下操作:
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[^/]+"
Run Code Online (Sandbox Code Playgroud)
这将允许除用作参数分隔符的“/”字符之外的所有字符。用表情
my_foobar_route:
url: /example/routing/:s1/:id
requirements:
id: \d+
s1: "[^/]{3,}"
Run Code Online (Sandbox Code Playgroud)
您可以强制字符串长度至少为三个字符。
不要忘记将带有方括号的正则表达式放在引号中!如果您忘记了它们,路由的 YAML 解析器会将它们解释为数组表达式。