CakePHP API PUT с вводом JSON - PullRequest
4 голосов
/ 22 декабря 2011

Я создаю API с использованием CakePHP.

Я хочу использовать PUT из своего мобильного приложения для обновления данных.Формат ввода - JSON, но $ this-> data выглядит как null.

Я вызываю этот URL (как указано в документации) из моего приложения: /recipes/123.json

И в моих «рецептах» (или что-то еще) у меня есть следующий контроллер:

function edit($id = null) {

    $this->User->id = $id;
    if (empty($this->data)) {
        $this->data = $this->User->read();
        $message = array('StatusCode' => 999, 'ERROR' => "");
    } else {
        if ($this->User->save($this->data)) {
            $message = array('StatusCode' => 200, 'ErrorCode' => "");
        } else {
            $message = array('StatusCode' => 400, 'ErrorCode' => "UnknownError");
        }

    }

    $this->set(compact("message"));

    $this->set('albums', $this->User->Album->find('list'));
}

Я правильно получаю ответ JSON в своем приложении, однако я получаю ошибку 999 - это означает, что $ this-> data пусто,В моей функции add в моем контроллере, где он получает JSON, используя POST - данные $ this-> назначаются правильно.И, о-о, если я использую POST вместо PUT при редактировании - данные $ this-> устанавливаются, но я не могу сохранить данные ..

Итак ... как мне это сделать?: S

Ответы [ 2 ]

5 голосов
/ 09 октября 2012

Вставьте из ссылки Лучомолины http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-xml-or-json-data

//Get JSON encoded data submitted to a PUT/POST action
$data = $this->request->input('json_decode');

и вы получите свой объект.

$data->Model->field ...
0 голосов
/ 12 апреля 2012

Я не проверял, но я думаю, что ваши данные в $this->request->input() или $this->request->data()

Дополнительная информация:

http://book.cakephp.org/2.0/en/controllers/request-response.html#accessing-xml-or-json-data

http://book.cakephp.org/2.0/en/controllers/request-response.html#CakeRequest::data

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...