您没有指定您使用的蛋糕版本。请始终这样做。不提它会给你带来很多错误的答案,因为在版本中很多事情都会发生变化。
例如,如果您使用的是最新的 2.3.0,则可以使用新添加的查询方法:
$id = $this->request->query('id'); // clean access using getter method
在您的控制器中。
http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeRequest::query
但旧方法也有效:
$id = $this->request->params->url['id']; // property access
$id = $this->request->params[url]['id']; // array access
你不能使用命名为
$id = $this->request->params['named']['id'] // WRONG
将要求您的网址为www.example.com/tester/retrieve_test/good/id:012345
. 所以havelock的答案是不正确的
然后将您的 id 传递给表单默认值 - 或者在您的情况下,在提交表单后直接传递给 save 语句(此处无需使用隐藏字段)。
$this->request->data['Listing']['vt_tour'] = $id;
//save
如果您真的需要/想要将其传递给表单,请使用 else 块$this->request->is(post)
:
if ($this->request->is(post)) {
//validate and save here
} else {
$this->request->data['Listing']['vt_tour'] = $id;
}