我知道CakePHP参数很容易从像这样的URL中提取值:
http://www.example.com/tester/retrieve_test/good/1/accepted/active
我需要从这样的URL中提取值:
http://www.example.com/tester/retrieve_test?status=200&id=1yOhjvRQBgY
我只需要来自此ID的值:
ID = 1yOhjvRQBgY
我知道在正常的PHP $ _GET中会很容易地检索这个,但是我不能让它将值插入到我的数据库中,我使用了这段代码:
$html->input('Listing/vt_tour', array('value'=>$_GET["id"], 'type'=>'hidden'))
任何想法的人?
答案 0 :(得分:15)
使用这种方式
echo $this->params['url']['id'];
上
答案 1 :(得分:12)
您没有指定正在使用的蛋糕版本。请始终这样做。没有提到它会给你很多错误的答案,因为很多东西在版本中都会发生变化。
如果您使用的是最新的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
如果您确实需要/想要将其传递给表单,请使用$this->request->is(post)
的else块:
if ($this->request->is(post)) {
//validate and save here
} else {
$this->request->data['Listing']['vt_tour'] = $id;
}
答案 2 :(得分:1)
或者你也可以使用所谓的named parameters
$id = $this->params['named']['id'];