ユーザー入力に基づいて、DATABASE_CONFIG 変数にアクセスして変更する方法を探しています。CakePHP を使用して、ドキュメントで提供されているものに基づいてカスタム データソースを作成し、外部 API にアクセスしました。API は、最新の 12 個のオブジェクトを含む JSON 文字列を返します。API リクエストのページ番号を変更して、次の 12 件の結果を取得し、ユーザーが入力したフリー テキスト クエリを受け入れる必要があります。
アプリ/構成/データベース.php
class DATABASE_CONFIG {
public $behance = array(
'datasource' => 'BehanceDatasource',
'api_key' => '123456789',
'page' => '1',
'text_query' => 'foo'
);
}
アプリ/モデル/データソース/BehanceDataSource.php
App::uses('HttpSocket', 'Network/Http');
class BehanceDatasource extends DataSource {
public $description = 'Beehance datasource';
public $config = array(
'api_key' => '',
'page' => '',
'text_query' => ''
);
public function __construct($config) {
parent::__construct($config);
$this->Http = new HttpSocket();
}
public function listSources($data = null) {
return null;
}
public function describe($model) {
return $this->_schema;
}
public function calculate(Model $model, $func, $params = array()) {
return 'COUNT';
}
public function read(Model $model, $queryData = array(), $recursive = null) {
if ($queryData['fields'] === 'COUNT') {
return array(array(array('count' => 1)));
}
$queryData['conditions']['api_key'] = $this->config['api_key'];
$queryData['conditions']['page'] = $this->config['page'];
$queryData['conditions']['page'] = $this->config['text_query'];
$json = $this->Http->get('http://www.behance.net/v2/projects', $queryData['conditions']);
$res = json_decode($json, true);
if (is_null($res)) {
$error = json_last_error();
throw new CakeException($error);
}
return array($model->alias => $res);
}
}
$behance 配列にアクセスして変更する方法はありますか、それとも完全に欠落している CakePHP を使用して外部 API にアクセスする別の方法はありますか?