2014/05/13追記
AngularJSのリクエスト判定
ブラウザのアドレス入力によるリクエストなのか、AngularJSのHTTPリクエストなのか判定したい場合、
$_SERVER['HTTP_ACCEPT']に「application/json」が含まれるかで判断すると良いです。
isAngular.php
function isAngular()
{
if (false !== strpos($_SERVER['HTTP_ACCEPT'], 'application/json')) {
return true;
}
return false;
}
PhalconではRequestのインターフェイスにisAjaxというメソッドがあります。
ide/1.3.1/Phalcon/Http/RequestInterface.php
/**
* Checks whether request has been made using ajax. Checks if $_SERVER['HTTP_X_REQUESTED_WITH']=='XMLHttpRequest'
*
* @return boolean
*/
public function isAjax();
XMLHttpRequestで判定しているのでAngularのリクエストではtrueになってくれません。
他のWebフレームワークで同様のメソッドがあったとして、期待通りに動作してくれなければ$_SERVER['HTTP_ACCEPT']を使いましょう。
POSTのbody取得
AngularJSのPOSTリクエストは$_POSTに値が入ってくれません。
php://input
から読み込みます。
request.php
$request = json_decode(file_get_contents("php://input"))
2014/05/13追記 コメント欄より、PhalconではPhalcon\Http\RequestクラスのgetJsonRawBodyメソッドで取得できることを教えていただきました。
$json = $this->request->getJsonRawBody();