我正在尝试使用以下代码向Slim发出PUT请求:
<script type = "text/javascript">
function submitform() {
var url = '/users/' + $('#user_id').val();
$('#myform').attr('action', url);
var data = JSON.stringify({"value": $('#user_data').val()});
$('<input type="hidden" name="json"/>').val(data).appendTo('#myform');
$("#myform").submit();
}
</script>
<form id = "myform" method="post">
id: <input type = "text" id = "user_id">
data: <input type = "text" name = "value" id = "user_data">
<input type="hidden" name="_METHOD" value="PUT"/>
<input type = "button" value = "submit" onClick='submitform()'>
</form>
我的index.php文件包含:
$app->put('/users/:id', 'update');
function update($id) {
$jsonmessage = 'Slim'Slim::getInstance()->request();
$message = json_decode($jsonmessage->getBody());
// what do I put here ????
}
我应该用什么来代替????来检索值参数。我可以看到它,如果我使用$_POST['json'],但我不认为这是REST兼容。我尝试过的其他方法,如$message->value,都不起作用(不返回任何值)。
谢谢。
更新:Slim论坛上有人给出了以下答案:
$json = $jsonmessage->put('json');
$message = json_decode($json);
如果您想捕获JSON
put请求的参数,那么Slim中有一个简单的解决方案。
//$app->request()->params('parameterKey');
$params = $app->request()->params('value');
我想我明白你的问题了,如果解决了请告诉我。
$message->value
json_decode将为您创建一个标准PHP对象。您也可以尝试使用var_dump($message)来查看对象的结构,以便调试。
我使用下面的代码来获取请求正文
$request = Slim::getInstance()->request();
$user = json_decode($request->getBody());