2017-02-13 122 views
1

我正在使用Slim Framework版本3並且存在一些問題。Slim 3 getParsedBody()總是爲空並且爲空

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

結果總是:

你能幫助我嗎?

+4

你能解釋一下您的請求發送數據到應用程序? –

+0

顯示捲曲請求示例。 –

回答

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

我得到NULL與var_dump($ request-> getParsedBody());當使用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

對於Sl正在使用的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,不是爲Slim Framework版本3.請求的工作方式從2重大改變到3. – meun5