Cakephp路由问题,用于从URL传递参数

时间:2013-02-15 22:43:17

标签: cakephp routing controller

对于cakePHP路由,我明白如果你这样做

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

这将映射到http://www.mywebsite.com/controller/view/id

的任何网址

但是如何映射http://www.mywebsite.com/controller/id/action的网址?

例如:http://www.mywebsite.com/classes/3/create/2

和我在Classes控制器中的创建函数

它将接收参数$ id,在这种情况下为3,$ count,在这种情况下为2,

public function create( $id, $count ) {
    ....
    // i can here create a total number of $count students
    // and assign them class_id $id

    // so  student1.class_id = 3
    // and student2.class_id = 3
}

我试过了,

Router::connect(
'/:controller/:id/:action',
    array('id' => '[0-9]+'),
    array('count' => '[0-9]{,2}')
);

它对我不起作用。

1 个答案:

答案 0 :(得分:0)

为了让Cake传递id并计数到你的控制器动作,你必须让路由知道它们是传递参数。为此,请按照您希望它们传递的顺序将它们包含在最后一个选项的pass数组中。

您的路线中也遗漏了:count,因此如果您通过了计数,则不会匹配。

您的新路线应如下所示:

Router::connect(
    '/:controller/:id/:action/:count',
    array(),
    array(
  'pass' => array('id', 'count'),
  'id' => '[0-9]+',
      'count' => '[0-9]{,2}'
)
);