如何在Symfony 2中描述具有复杂参数的路由

时间:2012-11-06 13:18:59

标签: regex symfony routing

我有路线:/user/username/{username}.{_format} username可以有任何符号。 例如,以下所有内容都是有效的:

  • user
  • user.name
  • user.name@example.com
  • user@example.com
  • user.name jr
  • user'o name

依旧......

username的每个部分都可以包含任何字符......

同样_format是可选字符串,例如jsonxml ...

我如何在路由规则中对其进行描述?

现在我有了这个:

MyBundle_getUserByUsername:
    pattern: /user/username/{username}
    defaults: { _controller: MyBundle:User:getUserByUsername, _format: json }
    requirements:
        _method: GET
        username: ".+"

但它没有那么有用。我无法指定format参数...

我需要你的帮助......

2 个答案:

答案 0 :(得分:1)

MyBundle_getUserByUsername:
    pattern: /user/username/{username}.{_format}
    defaults: { _controller: MyBundle:User:getUserByUsername, _format:json}
    requirements:
        _method: GET
        username: ".+(?<=.)"

答案 1 :(得分:0)

使用lazy quantificator

MyBundle_getUserByUsername:
    pattern: /user/username/{username}.{_format}
    defaults: { _controller: MyBundle:User:getUserByUsername, _format: json }
    requirements:
        username: ".+?"
        _method: GET
        _format: html|json