2017-02-13 4 views
1

Ich benutze die Slim Framework Version 3 und habe ein paar Probleme.Slim 3 getParsedBody() immer null und leer

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

Ergebnis ist immer:

null

Können Sie mir helfen?

+4

Können Sie erklären, wie Sie Ihre Anfrage an die App-Daten schicken? –

+0

Zeigen Sie eine Beispiel-Lockenanforderung an. –

Antwort

0

Es hängt davon ab, wie Sie Daten an die Route senden. Dies ist eine POST-Route, so dass die Body-Daten standardmäßig im Standardformat (application/x-www-form-urlencoded) erwartet werden. Wenn Sie JSON an diese Route senden, müssen Sie die Content-type-Kopfzeile auf application/json setzen. das heißt, die curl würde wie folgt aussehen:

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

Außerdem sollten Sie überprüfen, ob der Array-Schlüssel Sie suchen, gibt es:

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

Ich habe NULL mit var_dump ($ Anfrage-> getParsedBody()); wenn PATCH- oder PUT-Anfrage verwendet wird. Die POST-Anforderung gibt jedoch den Anfragetext zurück. Gibt es eine andere Methode für PATCH und PUT? – ultrasamad

+0

@ultrasamad Bitte erstellen Sie eine separate Frage mit einem minimalen PHP-Codebeispiel und dem Befehl curl, der das Problem anzeigt. –

0

Bitte versuchen auf diese Weise:

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

Ich hoffe, das hilft Ihnen!

+0

Das funktioniert nicht für Slim Framework 3, welches das OP verwendet. – meun5

+0

Sind Sie sicher? Für mich geht das. Schauen Sie sich dies an http://StackOverflow.com/Questions/28073480/How-to-Access-AJSON-Request-Body-of-A-Post-Request-in-Slim – jcarrera

+1

Das ist für Slim Framework Version 2, nicht für Slim Framework Version 3. Die Art, wie die Anfragen funktionieren, wurde stark von 2 auf 3 geändert. – meun5