5

CakePHP paramsは、次のような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がこれを簡単に取得することを知っていますが、DBに値を挿入するために取得することはできません。私は、次のコードを使用しました。

$html->input('Listing/vt_tour', array('value'=>$_GET["id"], 'type'=>'hidden'))

アイデアはありますか?

4

3 に答える 3

15

このように使用する

echo $this->params['url']['id'];

これはcakephpマニュアルhttp://book.cakephp.org/1.3/en/The-Manual/Developing-with-CakePHP/Controllers.html#the-parameters-attribute-paramsにあります

于 2012-10-24T09:39:40.790 に答える
13

使用しているケーキのバージョンを指定していません。常にそうしてください。バージョンの間に多くのことが変わるので、それについて言及しないと、多くの誤った答えが得られます。

たとえば、最新の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

URLを。にする必要があります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;
}
于 2012-10-24T09:46:25.170 に答える
1

または、いわゆる名前付きパラメーターを使用することもできます

$id = $this->params['named']['id'];
于 2012-10-24T09:41:22.223 に答える