问题:
需要有这样的网址:
wall:
pattern: /{username}/
但是.. 它匹配每个 url,如 /Messages/、/Settings/
唯一想到的解决方案是检查该用户是否存在......以及是否没有重定向到真实的 /Settings ?但它为每一页选择一个,我不喜欢它。
还有其他方法吗?+ 我可能还需要拒绝使用路由模式注册用户?如何?
不,我不想添加到 /User/{username} 之类的 URL
根据我的评论,这可能是一种解决方法:
pages:
pattern: /{page}/
requirements:
page: "(Messages|Settings|SomeOtherPage|YetAnotherPage)"
wall:
pattern: /{username}/
基本上,它要求页面(设置、消息等)以大写字母 ([AZ]) 开头,页面名称的其余部分并不重要。
至于用户个人资料页面,它们应该明确地以小写字符 ([az]) 开头。
不知道能不能满足你的要求……
编辑:
这实际上是@tomas.pecserke 的简化解决方案。我刚刚编辑了路由,因此所有页面都在单个路由中枚举。
我强烈建议不要使用这种方法。您应该明确地为路线添加前缀。但是如果一定要这样的话,可以先指定其他路由。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