2017-02-13 28 views
1

私はSlim Framework Version 3を使用していますが、いくつか問題があります。スリム3 getParsedBody()は常に空で空です

$app-> post('/', function($request, $response){ 
    $parsedBody = $request->getParsedBody()['email']; 
    var_dump($parsedBody); 
}); 

結果は常にある:

ヌル

あなたは私を助けることができますか?

+4

あなたはあなたの要求は、アプリケーションにデータを送る方法を説明できますか? –

+0

例curl要求を表示します。 –

答えて

0

どのようにデータをルートに送信するかによって異なります。これはPOSTルートなので、デフォルトではボディデータは標準形式(application/x-www-form-urlencoded)になります。

このルートにJSONを送信する場合は、Content-typeヘッダーをapplication/jsonに設定する必要があります。また、あなたが探している配列のキーがあることを検証する必要があり

curl -X POST -H "Content-Type: application/json" \ 
    -d '{"email": "[email protected]"}' http://localhost/ 

:すなわちカールは次のようになり

$parsedBody = $request->getParsedBody() 
$email = $parsedBody['email'] ?? false; 
+1

私はvar_dump($ request-> getParsedBody())でNULLを取得しました。 PATCHまたはPUT要求のいずれかを使用する場合。しかし、POST要求は要求本体を返します。 PATCHとPUTには別の方法がありますか? – ultrasamad

+0

@ultrasamad最低限のPHPコード例と問題を表示するcurlコマンドを使用して、別の質問を作成してください。 –

0

、この方法を試してください:

$app-> post('/yourFunctionName', function() use ($app) { 
    $parameters = json_decode($app->request()->getBody(), TRUE); 
    $email = $parameters['email']; 
    var_dump($email); 
}); 

を私はこれがあなたの役に立てば幸い!

+0

これは、OPが使用しているSlim Framework 3では動作しません。 – meun5

+0

本当ですか?わたしにはできる。これを見てhttp://stackoverflow.com/questions/28073480/how-to-access-a-json-request-body-of-a-post-request-in-slim – jcarrera

+1

これはSlim Frameworkバージョン2用であり、そうではありません。スリムフレームワークバージョン3の場合。要求の仕方は2から3に大幅に変更されました。 – meun5

関連する問題