0

我正在使用 symfony 1.4,我有这样的路线:

user_orders:
  class: sfDoctrineRouteCollection
  options:
    model:                UserOrders
    module:               user_orders
    prefix_path:          /orders
    column:               id
    with_wildcard_routes: true
    requirements: 
      id: \w+

我想在 ID 字段中有带有负数的订单,所以,当我尝试访问这样的 url 时,/orders/12/edit我会转到编辑表单页面,这没关系,但是,当我访问这样的 url 时,/orders/-1/edit我得到了错误Action "orders/1" does not exist.,所以,我开始尝试使用 id 中的字符串,但是在访问 url 时/orders/id1/edit出现相同的错误Action "orders/id1" does not exist.,所以问题是,
这可能吗?我的意思是,在 url 中有一个 id 或 string 的负数?路由配置中的要求是否可以?

此致

4

2 回答 2

2

我要回答我自己的问题,也许它可以帮助别人,尝试几次后修复很简单,我需要在user_orders路由定义下创建另一个路由来覆盖user_orders_edituser_orders_update路由,最后,它看起来像这样:

user_orders:
  class: sfDoctrineRouteCollection
  options:
    model:                UserOrders
    module:               user_orders
    prefix_path:          /orders
    column:               id
    with_wildcard_routes: true
  requirements: {id: \w+}
user_orders_edit:
  url:     /orders/:id/edit.:sf_format
  class:   sfDoctrineRoute
  options: { model: UserOrders, type: object }
  param:   { module: user_orders, action: edit, sf_format: html }
  requirements: { sf_method: get, id: \w+ }
user_orders_update:
  url:     /orders/:id.:sf_format
  class:   sfDoctrineRoute
  options: { model: UserOrders, type: object }
  param:   { module: user_orders, action: update, sf_format: html }
  requirements: { sf_method: put, id: \w+ }

我不能在 url 中使用负数,但我可以使用类似的字符串/orders/id123/edit

完成了

于 2013-05-15T22:56:51.223 回答
0

重提一个老问题,但我自己偶然发现了这个问题:

therequirements不是子级,options而是兄弟级(与 options 级别相同)。所以这将起作用:

user_orders:
  class: sfDoctrineRouteCollection
  options:
    model:                UserOrders
    module:               user_orders
    prefix_path:          /orders
    column:               id
    with_wildcard_routes: true
  requirements: {id: \w+}
于 2015-04-09T14:40:42.717 回答