PUT запросить тело NULL на Slim

Я думаю, что я прочитал каждый ответ там относительно проблем с получением тела запроса PUT на Slim Framework (работает на Windows XAMPP). Кажется, ни одно из решений не работает для меня, поэтому, возможно, есть еще одна оговорка, которую я пропускаю.

Мой PHP-код выглядит следующим образом:

require 'Slim/Slim.php';

\Slim\Slim::registerAutoloader();
$app = new \Slim\Slim();
$app->run();

$app->put('/calendar/update/:id', function($id) use ($app){
$ev = json_decode($app->request()->getBody());
echo var_dump($ev);  // NULL
}

Я тестировал его в тестере REST в PHPStorm, используя параметры и строку запроса — безрезультатно. Я пытался установить contentType: application/x-www-form-urlencoded явно в моем вызове AJAX, а также.

Кажется, заблудился здесь …

2

Решение

Была похожая проблема. Если вы используете форму для отправки запроса. Добавьте это скрытое поле в вашу форму. Также не забудьте переместить $ app-run (); до последней строки.

<input type="hidden" name="_METHOD" value="PUT"/>

http://docs.slimframework.com/routing/put/

1

Другие решения

$app->contentType() Метод влияет только на HTTP-ответ, отправленный Slim обратно HTTP-клиенту. Я полагаю, что Мика предлагает изменить HTTP-запрос Content-Type заголовок к application/json если вы собираетесь анализировать тело запроса, как показано в примере выше.

Кроме того, вы должны только вызвать $app->run() ПОСЛЕ того, как вы определите свои маршруты. Ваш пример выше вызывает $app->run() перед вашими маршрутами.

Надеюсь это поможет!

-мистифицировать

2

По вопросам рекламы [email protected]