代码之家  ›  专栏  ›  技术社区  ›  Loftx

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

  •  1
  • Loftx  · 技术社区  · 14 年前

    对于我的网站,我有很多 Orders 每个都包含一个数字 Quotes . 报价单始终与单个订单关联,因此在报价控制器中,我添加了一个引用,以引用其订单:

    function add($orderId) {
        // function here
    }
    

    调用的URL看起来有点像

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

    我突然想到,如果URL看起来更像

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

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

    这是可以用cakephp实现的吗?

    1 回复  |  直到 11 年前
        1
  •  1
  •   deizel. user4815162342    14 年前

    查看文档 defining routes .

    这样的技巧应该可以做到:

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

    您可以使用 $this->params['id'] 在里面 QuotesController::add() .

    编辑:

    另外,请查看以下文档: 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) .