我想我已经阅读了关于在Slim框架(在Windows XAMPP上运行(上获取PUT请求正文的问题的所有答案。似乎没有一个解决方案对我有用,所以也许我缺少另一个警告。
我的 php 代码如下:
require 'Slim/Slim.php';
SlimSlim::registerAutoloader();
$app = new SlimSlim();
$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
。
似乎在这里迷路了...
$app->contentType()
方法仅影响从 Slim 发送回 HTTP 客户端的 HTTP 响应。我相信 Mika 建议您将 HTTP 请求的 Content-Type
标头更改为 application/json
如果您打算解析请求正文,如上面的示例中所示。
此外,您应该仅在定义路由后调用$app->run()
。上面的示例在路由之前调用$app->run()
。
希望这有帮助!
-乔希
有类似的问题。如果您使用表单发送放置请求。将此隐藏字段添加到表单中。另外不要忘记移动$app-run((;到最后一行。
<input type="hidden" name="_METHOD" value="PUT"/>
http://docs.slimframework.com/routing/put/