Symfony路由参数要求限制

时间:2010-06-19 01:11:42

标签: symfony1

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

鉴于路线

my_foobar_route:   url:/ example / routing /:s1 /:id   要求:{id:\ d +}

有谁能提醒我如何强制param s1成为一个字符串?

3 个答案:

答案 0 :(得分:13)

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

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

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

答案 1 :(得分:4)

如果您不在乎字符串包含的内容,或者您​​事先不知道其中包含的内容,请尝试以下操作:

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

答案 2 :(得分:0)

通过url发来的任何东西都是一个字符串 - 任何要求都比这更强大,你不需要做任何事情,你的参数已经是一个字符串。也许你想要一个特殊格式的字符串?