0

我正在尝试在 cakephp 中配置我的自定义路由,以便 url

/objects/id/action => ObjectsController.action() with params['id']=id

(这样我就不必拥有像 /objects/action/id 这样的 url,这在逻辑上对我来说比 objects/id/action 更有意义)。

我仍然希望 /objects/action 触发 ObjectsController.action() (例如,用于添加、索引、搜索)。

我的路线配置如下所示:

Router::connect('/:controller/:id',
    array('action'=>'view'),
    array(
        ':id'       =>  '^[0-9]+$'
    )
);
Router::connect('/:controller/:id/:action/*',
    array('action'=>'view'),
    array(
        ':id'       =>  '^[0-9]+$',
        ':action'   =>  '[A-Za-z0-9_\-]*'
    )
);

这适用于(例如):

  • /对象/54
  • /objects/54/编辑
  • /对象/添加

但不与

  • /对象/索引/页面:2

为此,它给了我一个错误,我需要在 ObjectsController 中定义操作“page:2”...当然它应该可以工作,因为 :id 应该只匹配数字,不是吗?

4

1 回答 1

0

尝试从第二个参数中删除“:”:

'id'       =>  '^[0-9]+$'

另请参阅“通过”选项。

@see google 上的“cakephp 路线”:

于 2011-09-23T14:34:12.213 回答