
いつも参考にさせていただいています。
Cakephp2を仕事で使い始めました。
formからPOSTされた値をControllerで取得する際、
$this->request->***
が使えますが、これには
data
query
param
と種類がありますよね。
この違いはなんなのでしょうか?
今は$this->request->dataを使って実装しているのですが、いろんな記事を調べていると
いろんな書き方をしているので気になりました。
ご存知の方、回答よろしくお願いいたします。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
ベストアンサー
追加の質問についての回答です。
確認ありがとうございます。
ページングの件ですね。
その前にお詫びをしなければいけないことが、、、
↑は使ったことがないです。(※CakePHP1.xの時はよく使っていたらしいですが、私は2.xからスタートだったので)
これ嘘です。めちゃくちゃ使ったことあります。$this->paramsと勘違いしていました。。。orz すみませんでしたm(_ _ )m 先に回答したドキュメントにもありますが、リクエストのデータへアクセスするときに使います。
さて、追加質問の件ですが、そのデータはページャーで必要なデータになります。
http://book.cakephp.org/2.0/ja/core-libraries/components/pagination.html
ページャーの要求する値をリクエストした場合、$this->params['named']の中にデータを入れてリクエストされます。
CakePHPでページャーを発行したときのURLで
http://example.jp/mains/index/page:2
↑こういう形式を見たことはないですか?これでリクエストすると $this->params['named']に値が入ります。
こんな感じ。※$this->log()の結果は、~/cakephp/app/tmp/logs/error.logに出力されます。
lang
1// MainsController.php Action : index() 2$this->log(print_r($this->params,true));
[params] => Array ( [plugin] => [controller] => mains [action] => index [named] => Array ( [page] => 2 // ここに値が入っている。$this->params['named']['page'] )
さらに値を追加してみます。
http://example.jp/mains/index/page:2/test:3
[params] => Array ( [plugin] => [controller] => mains [action] => index [named] => Array ( [page] => 2 [test] => 3 // 追加されている )
一言でまとめると、「pagenateで利用する値が入っている」でいいのかな。
※ちなみに、ページャー以外の用途があるかどうかはすぐには思いつきません。経験不足でさーせん(´・ω・`)
以上ですー。がんばってください^^
ここから備考
また、Webでよく見るクエリパラメータ(http://example.jp/mains/index/?page=2&test=3)に変更すると、$this->request->queryに値が入ります。
ちなみに、調べてみたところCakePHP2.xから$this->requestに統一されたらしいです。whiteperfumeさんのところはおそらくCakePHP1.xの環境なのかなと思いますが、2.xからは$this->requestに変更したらいいかなと思います。
$this->requestの中を出力したのerror.logの抜粋
lang
1$this->log(print_r($this->request,true));
[params] => Array ( [plugin] => [controller] => mains [action] => index [named] => Array ( [page] => 2 ) [pass] => Array ( ) [isAjax] => ) [data] => Array ( ) [query] => Array ( )
$this->paramsでも全く同じになりますが、$this->requestで統一すればいいかなと。
lang
1$this->log(print_r($this->params,true));
[params] => Array ( [plugin] => [controller] => mains [action] => index [named] => Array ( [page] => 2 ) [pass] => Array ( ) [isAjax] => ) [data] => Array ( ) [query] => Array ( )
投稿2015/05/21 04:00
総合スコア43
0
CakePHPのrequestデータの取り出し方は、httpのメソッド次第で記述が変わります。
lang
1// postでのデータを取得したいときはこっち 2$this->request->data; 3 4// getでのデータを取得したいときはこっち 5$this->request->query;
$this->request->params
↑は使ったことがないです。(※CakePHP1.xの時はよく使っていたらしいですが、私は2.xからスタートだったので)
ドキュメントも一度読んでみるといいですよ。(わかりづらいのは本当にわかりづらいですが・・・)
リクエストとレスポンスオブジェクト
よろしくお願いします。
投稿2015/05/20 07:26
総合スコア43
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。


あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2015/05/21 08:02
2015/05/21 08:07