Intereting Posts

cakephp datasource Вызов неопределенного метода

Я создал простой datasource :

 // app/Model/Datasource/FeedSource.php App::uses('DataSource', 'Model/Datasource'); class FeedSource extends DataSource { public function abcd() { echo 'Hello World!'; } } 

в моей database.php :

 public $feed = array( 'datasource' => 'FeedSource' ); 

И в модели Feeda :

 class Feeda extends AppModel { public $useTable = false; public $useDbConfig = 'feed'; } 

в контроллере list :

 $this->loadModel('Feeda'); $this->Feeda->abcd(); 

Но он возвращает фатальную ошибку:

 Error: Call to undefined method FeedSource::query() 

Как его решить?

Благодаря…

Возможно, вы использовали DboSource вместо DataSource .

У DataSource нет запроса метода, DboSource делает. Обновите свой код, чтобы он выглядел так:

 App::uses('DboSource', 'Model/Datasource'); class FeedSource extends DboSource {} 

Edit: Похоже, это не проблема. В Model есть волшебный метод __call, который вызывает $this->getDataSource()->query($method, $params, $this); Источник. Вам нужно реализовать это самостоятельно.

 class FeedSource extends DataSource { public function abcd() { echo 'Hello World!'; } public function query($method, $params, $Model) { // you may customize this to your needs. if (method_exists($this, $method)) { return call_user_func_array(array($this, $method), $params); } } }