在Cakephp中创建有意义的添加URL

时间:2010-05-19 09:08:24

标签: cakephp url-routing crud url

对于我的网站,我有一些Orders,其中每个Quotes都包含多个function add($orderId) { // function here } 。报价总是与单个订单挂钩,因此在报价控制器中我添加一个参考其订单的报价:

http://www.example.com/quotes/add/1

调用网址看起来有点像

http://www.example.com/orders/1/quotes/add

如果他们看起来更像

,那么网址会更有意义
{{1}}

正在将报价添加到订单1中。

这是否可以在CakePHP中实现?

1 个答案:

答案 0 :(得分:1)

查看defining routes的文档。

这样的事情可以解决问题:

Router::connect(
    '/orders/:id/quotes/add',
    array('controller' => 'quotes', 'action' => 'add'),
    array('id' => '[0-9]+')
);

您将能够通过$this->params['id']中的QuotesController::add()访问该ID。

修改:

另外,请查看passing parameters to action的文档。

可以将ID作为控制器动作的参数传递,如下所示:

Router::connect(
    '/orders/:id/quotes/add',
    array('controller' => 'quotes', 'action' => 'add'),
    array('pass' => array('id'), 'id' => '[0-9]+')
);

然后,您可以$id中的QuotesController::add($id)访问该ID。