Запрос JSON PUT с использованием Slim framework

Я пытаюсь сделать запрос PUT для Slim, используя следующий код:

 <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);

person user1884367    schedule 17.06.2013    source источник


Ответы (3)


Если вы хотите зафиксировать параметр вашего JSON пут-запроса, то в Slim есть простое решение.

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

Я думаю, что получил ваш вопрос и дайте мне знать, если он решит.

person Shaharia Azam    schedule 28.10.2013

$сообщение->значение

json_decode создаст для вас стандартный объект php. Вы также можете попробовать var_dump($message), чтобы увидеть структуру объекта для отладки.

person AngularNerd    schedule 13.04.2014

Я использую приведенный ниже код, чтобы вытащить тело запроса

$request = Slim::getInstance()->request();
$user = json_decode($request->getBody());
person Varshaan    schedule 24.11.2015