我正在使用CakePHP构建API。
我想从我的移动应用程序中使用PUT来更新数据。格式为JSON作为输入,但$ this->数据似乎为空。
我从我的应用程序中调用此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->数据为空。 在我的控制器中的add函数中,它使用POST接收JSON - $ this->数据被正确分配。哦,如果我在编辑中使用POST而不是PUT - $ this->数据设置,但我无法保存数据..
那么..我该怎么做? :S
答案 0 :(得分:5)
从luchomolina的链接中插入 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 ...
答案 1 :(得分:0)
我尚未对其进行测试,但我认为您的数据位于$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