PUT请求Body在Slim上为NULL

时间:2014-12-19 22:01:05

标签: php request put slim

我想我已经阅读了关于在Slim框架上运行PUT请求主体(在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
}

我一直在PHPStorm的REST测试中测试它,都使用参数和查询字符串 - 无济于事。我也尝试在我的ajax调用中明确设置contentType: application/x-www-form-urlencoded

似乎迷路了...

2 个答案:

答案 0 :(得分:2)

$app->contentType()方法仅影响从Slim发送回HTTP客户端的HTTP响应。我相信Mika建议您将HTTP请求的Content-Type标头更改为application/json,如果您打算解析请求正文,如上例所示。

此外,您应该只在定义路线后调用$app->run()。上面的示例在您的路线之前调用$app->run()

希望这有帮助!

-Josh

答案 1 :(得分:1)

有类似的问题。如果您使用表单发送put请求。将此隐藏字段添加到表单中。也不要忘记移动$ app-run();到最后一行。

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

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