質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

Q&A

解決済

2回答

9491閲覧

Cakephp2.*の$this->request->****について

退会済みユーザー

退会済みユーザー

総合スコア0

CakePHP

CakePHPは、PHPで書かれたWebアプリケーション開発用のフレームワークです。 Ruby on Railsの考え方を多く取り入れており、Railsの高速性とPHPの機動性を兼ね備えています。 MVCやORMなどを「規約優先の考え方」で利用するため、コードを書く手間を省くことができます。 外部のライブラリに依存しないので、単体での利用が可能です。

0グッド

0クリップ

投稿2015/05/20 06:34

いつも参考にさせていただいています。

Cakephp2を仕事で使い始めました。
formからPOSTされた値をControllerで取得する際、
$this->request->***
が使えますが、これには
data
query
param
と種類がありますよね。

この違いはなんなのでしょうか?
今は$this->request->dataを使って実装しているのですが、いろんな記事を調べていると
いろんな書き方をしているので気になりました。

ご存知の方、回答よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答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

Aipa

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/05/21 08:02

な・・・なるほど!詳細な回答ありがとうございます! 私が触っている環境もcakephp2なのですが・・・w requestに統一しようと思います。 とても分かりやすい説明、ありがとうございました!
Aipa

2015/05/21 08:07

確認ありがとうございます! >私が触っている環境もcakephp2なのですが・・・w なん・・・だと・・・!? まじっすか。(っつーことはまだ私も勉強不足ですねorz) お互いがんばりましょう^^ でわでわー。
guest

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

Aipa

総合スコア43

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2015/05/21 01:19

Aipaさん ありがとうございます! なるほど、getとpostの違いなんですね。 URLも参考に致します! これと似たもので、cakephp2でページングを実装するとき、ページングされてきたのかそれ以外で表示されたのかを判定するために以下の処理を書いている記事を見つけました。 if(empty($this->params['named']['page']) && empty($this->params['named']['sort']) && empty($this->params['named']['direction'])) { // 何らかの処理 } この$this->params['named'] というのは何のデータにアクセスしているのでしょうか? 追加質問で申し訳ありませんがよろしくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問