CakePHP 2.5数据源,创建并返回响应

时间:2014-12-01 19:49:11

标签: cakephp cakephp-2.0 datasource

我有一项特定的任务是将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响应数据的正确方法吗?

1 个答案:

答案 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;
    }
.....