動かざることバグの如し

近づきたいよ 君の理想に

【CakePHP】GETパラメータを賢く取得する

POSTパラメータを取る方法は腐るほど掲載されているくせに、GETパラメータに至っては公式ドキュメントにすらロクに説明されてないGETパラメータ。

普通に取るなら

$this->request->query['id']

けどこれだと未定義の場合Noticeエラーが表示される

例えば本来/?id=334って感じで渡すところを/のみでGETパラメータIDが存在しない場合、以下のように怒られる

Notice (8): Undefined index: id [APP/Controller/PostsController.php, line 9]

エラーを出さない取得法

エラーを出したくないなら

Hash::get($this->request->query, 'id')

また、GETパラメータが設定されているかどうかで条件分岐したいことは多々あると思うけど、Hash::get()では第三引数を指定するとなかった場合の値(デフォルト値)も指定できるぞい( CakePHP2.5以上)

例えば

$order = Hash::get($this->request->query, 'order', 'price')

とやると/?id=334&order=stockのようにorderが設定されている場合はその値であるstockが、/?id=334のように指定されなかった場合はデフォルト値であるpriceが格納される