1

对于 cakePHP 路由,我知道如果你这样做

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

这将映射到http://www.mywebsite.com/controller/view/id的任何网址,

但是映射 URL 是http://www.mywebsite.com/controller/id/action怎么样?

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

在我的类控制器中的创建函数中,

它将接收参数 $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}')
);

它对我不起作用。

4

1 回答 1

0

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

你也错过:count了你的路线,所以如果你通过了计数,它就不会匹配。

您的新路线应如下所示:

Router::connect(
    '/:controller/:id/:action/:count',
    array(),
    array(
  'pass' => array('id', 'count'),
  'id' => '[0-9]+',
      'count' => '[0-9]{,2}'
)
);
于 2013-02-16T00:38:31.303 回答