Symfony1 Symfony路线参数要求限制

Symfony1 Symfony路线参数要求限制,symfony1,Symfony1,如何强制要求路由中的参数为字符串 给定路线 我的_foobar_路线: url:/example/routing/:s1/:id 要求:{id:\d+} 有人能提醒我如何强制参数s1成为字符串吗?几乎通过url得到的任何东西都是字符串-任何要求都比这强,您不需要做任何事情,您的参数已经是字符串了。也许您需要一个特殊格式的字符串?您只需要提供一个合适的正则表达式: my_foobar_route: url: /example/routing/:s1/:id requirements:

如何强制要求路由中的参数为字符串

给定路线

我的_foobar_路线: url:/example/routing/:s1/:id 要求:{id:\d+}


有人能提醒我如何强制参数s1成为字符串吗?

几乎通过url得到的任何东西都是字符串-任何要求都比这强,您不需要做任何事情,您的参数已经是字符串了。也许您需要一个特殊格式的字符串?

您只需要提供一个合适的正则表达式:

my_foobar_route:
  url: /example/routing/:s1/:id
  requirements:
    id: \d+
    s1: "[a-zA-Z]+"

编辑:在第二个正则表达式周围添加引号;YAML将
[…]
解释为一个参数数组。谢谢:-)

如果您不关心字符串包含的内容,或者您事先不知道它将包含什么内容,请尝试以下操作:

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解析器将把它们解释为数组表达式。

编辑,谢谢。总是忘记将
[]
解释为YAML数组,我通常的路由正则表达式几乎总是以
\d+
;-)结尾