4

我正在尝试使用以下代码向 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);
4

3 回答 3

0

如果你想捕获你的JSONput 请求的参数,那么 Slim 中有一个简单的解决方案。

//$app->request()->params('parameterKey');
$params = $app->request()->params('value');

我想我得到了你的问题,如果它解决了,请告诉我。

于 2013-10-28T07:13:59.173 回答
0

$消息->值

json_decode 将为您创建一个标准的 php 对象。您也可以尝试使用 var_dump($message) 来查看对象的结构以进行调试。

于 2014-04-13T02:55:24.583 回答
0

我使用下面的代码来拉取请求正文

$request = Slim::getInstance()->request();
$user = json_decode($request->getBody());
于 2015-11-24T08:35:30.220 回答