问题:
需要这样的网址:
wall:
pattern: /{username}/
但是.. 匹配每个网址,例如/ Messages /,/ Settings /
只有想到的解决方案是检查此用户是否存在...以及是否没有重定向到真实/设置?但它为每个页面选择一个,我不喜欢它。
还有其他方法吗? +我也可能需要拒绝注册用户的路由模式?怎么样?
并且我不想添加到网址类似 / User / {username}
答案 0 :(得分:3)
根据我的评论,这可能是一种解决方法:
pages:
pattern: /{page}/
requirements:
page: "(Messages|Settings|SomeOtherPage|YetAnotherPage)"
wall:
pattern: /{username}/
基本上,它要求Page(设置,消息等)以大写([A-Z])开头,而页面名称的其余部分并不重要。
对于用户配置文件页面,它们应该以小写字符([a-z])显式启动。
我不知道这是否满足您的要求......
编辑:
这实际上是@ tomas.pecserke的简化解决方案。我刚编辑了路由,因此所有页面都以单一路径枚举。
答案 1 :(得分:0)
我强烈建议不要采用这种方法。你应该明确地为路线添加前缀。但是如果你必须这样做,你可以先指定其他路线。 RouteMatcher选择匹配模式的第一条路线。
# src/Acme/DemoBundle/Resources/routing.yml
account:
pattern: /account
defaults: # ...
some_other_route:
pattern: /some_other_route
defaults: # ...
wall:
pattern: /{username}/
defaults: # ...
# you can set requirements
requirements:
username: [a-z0-9]+ # regular expression