[CakePHP] RequestHandlerを使ってAjax通信かどうかを判定

CakePHPでAjax通信かどうかを判定する際には RequestHandler を使います。
RequestHandlerにではAjaxだけでなく、SSL・GET・POSTなどの判定を行うことができます。エラー処理を作る時にもよく使いますので、使い方を覚えておきましょう。
リクエストハンドラは初期状態で多くのJavaScriptライブラリが使っている Ajaxリクエストを自動的に判定する仕組みになっています。
RequestHandlerを使う準備
コントローラーのコンポーネントに「RequestHandler」を設定します。
1 |
public $components = array('RequestHandler'); |
RequestHandlerの使い方
判定はif文を使って行います。
1 2 3 4 5 |
if($this->RequestHandler->isAjax()){ //Ajax通信時の処理 }else{ //Ajax通信ではない時の処理 } |
if($this->RequestHandler->isAjax())の結果は true か false で返されます。
ajax.ctpというViewを作っておき、そのビューファイルを使う場合。
1 |
$this->layout = 'ajax'; |
autoRenderを利用しないで、値のみを利用する場合。
1 |
$this->autoRender = false; |
RequestHandlerの種類
RequestHandlreには下記のような種類があります。
RequestHandler | 説明 |
---|---|
$this->RequestHandler->isPost | POSTのアクセスかどうか |
$this->RequestHandler->isGet | GETのアクセスかどうか |
$this->RequestHandler->isAjax | Ajaxのアクセスかどうか |
$this->RequestHandler->isXml | XMLレスポンスを受け付けるかどうか |
$this->RequestHandler->isRss | RSSレスポンスを受け付けるかどうか |
$this->RequestHandler->isAtom | Atomレスポンスを受け付けるかどうか |
$this->RequestHandler->isSSL | SSLのアクセスかどうか |
$this->RequestHandler->isMobile | モバイルのアクセスかどうか |
- [CakePHP] JSONを使う事前準備と、モデルのデータをJSONに変更する処理
- [CakePHP]ajax前後でフォームパーツのname属性のキーが変わる場合の対処方法
- [JQuery] Ajaxが使える状態かどうかチェックする方法
- [CakePHP] TwitterBootstrap3のインストールと利用方法
- [CakePHP] 別モデルでページネーションを(pagination)行う方法