2014-12-01 4 views
0

У меня есть специальная задача для подключения веб-приложения CakePHP к удаленному покоящему серверу. Я создаю источник данных, метод чтения отлично работает, но api после сохранения данных возвращает массив обработанных данных.CakePHP 2.5 Datasource, создать и вернуть ответ

Ищет способ вернуть массив данных и использовать его в контроллере.

Мой код контроллера

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; // ?????? 
    } 

Может кто-то показать мне правильный способ использовать данные ответа апи в контроллере?

ответ

1

Я нашел решение, через несколько минут после сообщения. Это может помочь одному из вас.

DataSource

.... 

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; 
    } 
..... 
Смежные вопросы