コントローラーで$this->requestで扱うことができるCakeRequestを通してリクエスト情報にアクセスすることができる。CakeRequestのメソッドをまとめる。
##data()
POSTデータを取得する。
$id = $this->request->data('id');
//=> POSTデータidの値
##get()
クエリストリングの値を取得する。
$page = $this->request->query('page');
//=> クエリストリングpageの値
##is()
リクエストタイプを判別する。
例)リクエストがajaxの場合に処理を行う。
if($this->request->is('ajax')){
//ajaxの場合の処理
}
タイプ名 | 説明 |
---|---|
get | GETメソッドか判別する |
post | POSTメソッドか判別する |
ajax | ajaxか判別する |
ちなみに、ajaxの値はHTTPヘッダのHTTP_X_REQUESTED_WITHにXMLHttpRequestが含まれているかで判別している。
##referer()
リファラを取得する。
例)リファラを取得して、ポスト元のページを再描画する。
$this->redirect($this->request->referer();
##clientIp()
クライアント側のIPアドレスを取得する。
$ip = $this->request->clientIp();
デフォルトでは、env('HTTP_CLIENT_IP')を、存在しない場合は、env('REMOTE_ADDR')を返却する。
パラメータにfalseを設定すると、env('HTTP_X_FORWARDED_FOR')を返却する。
##header()
HTTPヘッダを取得できる。
HTTP_の部分をパラメータで渡す。
例)HTTP_User-Agentを取得する。
$user_agent = $this->request->header('User-Agent');
##here()
http://ドメイン/ルート/コントローラ名/アクション名
上記のルート以下を取得する。
例)アクセスログ出力のためアクセス先を取得する。
$path = $this->request->here;
プロパティのhereはクエリストリングを含めないが、here()はクエリストリングを含む。