我有一项特定的任务是将CakePHP Web应用程序连接到远程的restful服务器。我创建了一个数据源,read方法效果很好,但保存数据后的api返回一个已处理数据的数组。
寻找一种返回数据数组并在控制器中使用的方法。
我的控制器代码
public function admin_generate()
{
$data = $this->request->data;
$data['path'] = 'special/generate';
$this->Tool->create();
if($this->Tool->save($data)){
// handle response ????
}
$this->set('data',$data);
$this->set('_serialize','data');
}
在数据源文件中
public function create(Model $model, $fields = null, $values = null)
{
$data = array_combine($fields, $values);
$api = $this->config['api_path'].$data['path'].'?auth_key='.$this->config['auth_key'];
$json = $this->Http->post($api, $data);
$response = json_decode($json, true);
if (is_null($response)) {
$error = json_last_error();
throw new CakeException($error);
}
return $response; // ??????
}
有人能告诉我在控制器中使用api响应数据的正确方法吗?
答案 0 :(得分:1)
在发布问题后几分钟我找到了解决方案。这可以帮助你们中的一个。
<强>数据源强>
....
if (is_null($response)) {
$error = json_last_error();
throw new CakeException($error);
}
// SOLUTION
$model -> code = $response['code'];
$model -> key = $response['key'];
$model -> code_id = $response['code_id'];
return true;
.....
控制器中的
.....
if($this->Tool->save($data)){
unset($data['path']);
$data['code'] = $this->Tool->code;
$data['key'] = $this->Tool->key;
$data['code_id'] = $this->Tool->code_id;
}
.....