对于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}')
);
它对我不起作用。
答案 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}'
)
);