2016-07-18 7 views
0

新しいプロジェクトでAngular JS、PHP、Slimframeworkを使用します。スリムフレームワークでカスタムレスポンスステータスコードを設定する方法

私はAngular JSで約束をしていますが、応答ステータスコードがAPIから200として返される場合は、「成功」部分のみが機能します。

Slimframeworkデフォルトの応答ステータスコードで

は200で、(それは普通のことだエラーが存在しない場合)、すべての私の要求はステータスコード200を返す

しかし、私はいくつかの検証を作りたいと検証が失敗した場合、私はちょうどしたいですSlimフレームワークでカスタムステータスコードを変更または設定できます。この場合、私は、例えば、 "エラー" のコードブロック

と角度JSで問題をキャッチすることができるようになります:

SlimFrameworkパート

$app->get('/getUserInformations/{user_id}', function(Request $request, Response $response){ 

    if(isLoggedIn()){ 

     //Do something and send an answer with status code 200 

    }else{ 

     //Send some errors with status code 500 or something else 

    } 

}); 

角度JSパート:

user.getUserInformations = function(){ 
    var defer = $q.defer(); 

    $http.get($rootScope.defaultApiPath + '/getUserInformations/1') 
     .success(function(response){ 

      //if status code is 200 this means user logged in. Do something 

      defer.resolve(response); 
     }) 
     .error(function(error, status){ 

      // if status code is 500 this means not logged in. Show error message 

      defer.reject(error); 
     }); 

    return defer.promise; 
}; 

SlimFrameworkのドキュメントで、私は何かを見つけた

$newResponse = $response->withStatus(302); 

$data = array('name' => 'Rob', 'age' => 40); 
$newResponse = $oldResponse->withJson($data, 201); 

しかし、私はそれらを使用できませんでした。

は事前

+0

リターン$対応 - > withStatus(XXX)のために、 – geggleto

+0

答えとして書くことができますか。私は正解としてそ​​れを設定したい:)ありがとう、ありがとう。 50行の質問、1行の答え。すばらしいです.. –

答えて

1

にあなたが探している答えをいただき、ありがとうございます...私の質問は、私はスリムなフレームワークでカスタムステータスコードを設定することができる方法、である、まもなく...私に

の方法が見つからない、いくつかのエラーを与えますです...

return $response->withStatus(xxx); 

http://www.slimframework.com/docs/objects/response.html#the-response-status