我想我已经阅读了关于在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
。
似乎迷路了...
答案 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"/>