【发布时间】:2013-02-17 18:48:46
【问题描述】:
我有一个 sfDoctrineRouteCollection:
foo:
class: sfDoctrineRouteCollection
options:
model: Foo
columns: slug
action: [list, show, new, create, edit, update, delete]
如果现在有人创建了一个新实体,其 slug 导致,例如,“new”,路由引擎会混淆两条路由 /foo/new 用于创建新实体,/foo/new 用于显示带有 slug 的实体“new” ”。
什么是解决这个问题的简洁优雅的解决方案?
当然,我可以提供明确的路由定义,但这会使 sfDoctrineRouteCollection 有点过时。 “show”操作的单独路由定义已经解决了这个问题,例如,通过添加像“/foo/:slug/show”这样的前缀。我还可以提供一个自定义的 slugify 方法来拦截诸如“新”之类的 slug 等。
你知道任何干净优雅的解决方案吗?
【问题讨论】:
-
使用如下所示的 prefix_path 或 segment_name 选项是否有帮助:symfonyreference.com/routing-yml?
-
好吧,如果你有一个带有蛞蝓
new的项目并且你想查看它,它将转到/foo/new/show,/foo/new不应该显示任何内容,因为它不会知道该怎么做.. action 参数不存在。否则,您应该避免将slug变为new,或任何可能破坏路由的操作。 -
@j0k “动作”在这种情况下是隐含的。 Symfony 使用 request 方法来查找正确的操作。
标签: symfony-1.4 url-routing doctrine-1.2 slug