symfony路由,带负数或字符串为id和Doctrine RouteCollection

时间:2013-05-15 21:22:23

标签: routing symfony1

我正在使用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字段中输入带负数的订单,因此,当尝试访问此类/orders/12/edit的网址时,我会转到编辑表单页面,这是正常的,但是,当访问网址时与/orders/-1/edit一样,我收到错误Action "orders/1" does not exist.,因此,我开始尝试使用ID中的字符串,但在访问网址/orders/id1/edit时出现同样的错误Action "orders/id1" does not exist.,所以,问题是,
这有可能吗?我的意思是,在网址中有id或字符串的负数? 路由配置中的要求是否正确?

最好的问候

2 个答案:

答案 0 :(得分:2)

我要回答我自己的问题,也许它可以帮助其他人,经过几次尝试后修复很简单,我需要在user_orders路由定义下创建另一条路径来覆盖{{ 1}}和user_orders_edit路由,最后,它看起来像这样:

user_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+ } 的字符串

做到了

答案 1 :(得分:0)

要重振旧问题,但我自己偶然发现了这个问题:

requirements不是options的孩子,而是兄弟姐妹(与选项相同的级别)。所以这将有效:

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