2017-02-13 3 views
1

Я использую Slim Framework Version 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

Это не сработает для Slim Framework 3, что и использует OP. – 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

Смежные вопросы