Я мог бы использовать проверку здравомыслия здесь ...
У меня есть пользовательское свойство в моем объекте Cake3.0 CustomersTable.
//Таблица клиентов
public $paginatorDefaults = [
'conditions' => [...],
'contain' => [...]
... etc
];
Я использую это из глобального контроллера API ajax/json, чтобы читать нумерацию страниц, которую я могу установить для каждой модели.
//Апиконтроллер -
//Load the components
public $components = [
'RequestHandler',
'Paginator'
];
//Initialize the dynamic table object
public function initialize() {
parent::initialize();
//Set tableName
$this->_tableName = $this->findTable(Inflector::camelize($this->request->model));
//Instantiate table
$this->_table = $this->loadModel($this->_tableName);
}
public function index() {
$pagination = $this->_pagination(); //Loads the
$entities = $this->Paginator->paginate($this->_table->find(), $this->_table->paginatorDefaults);
$this->set([
'data' => $entities,
'request' => $this->request,
'_serialize' => ['data','request'],
]);
}
На стороне клиента я вызываю это через запрос Ajax на основе Angular, который был настроен для отправки заголовка X-Requested-With для запуска обработки isAjax() Cake, и я отправляю запросы на расширенный путь Cake .json для запрашивать данные JSON в ответ.
Итак, когда Config/app.php debug = true, все работает тикет-бу — корректно возвращает данные сущности. Но если я переключу отладку на false, теперь я получаю ошибки ORM в своем журнале ошибок.
Ошибка: [RuntimeException] Таблица Cake\ORM\Table не связана с paginatorDefaults
2014-10-24 16:49:44 Error: [RuntimeException] Table "Cake\ORM\Table" is not associated with "paginatorDefaults"
Request URL: /Tremendus/Momento/api/customers.json?sort=Customers.name&direction=asc&limit=10&page=1
Stack Trace:
0 /<masked path>/plugins/Api/src/Controller/ApiController.php(92): Cake\ORM\Table->__get('paginatorDefaul...')
1 /<masked path>/plugins/Api/src/Controller/ApiController.php(78): Api\Controller\ApiController->_pagination()
2 [internal function]: Api\Controller\ApiController->index()
3 /<masked path>/vendor/cakephp/cakephp/src/Controller/Controller.php(411): call_user_func_array(Array, Array)
4 /<masked path>/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(111): Cake\Controller\Controller->invokeAction()
5 /<masked path>/vendor/cakephp/cakephp/src/Routing/Dispatcher.php(85): Cake\Routing\Dispatcher->_invoke(Object(Api\Controller\ApiController))
6 /<masked path>/webroot/index.php(37): Cake\Routing\Dispatcher->dispatch(Object(Cake\Network\Request), Object(Cake\Network\Response))
7 {main}
Итак, я не нашел причин, по которым я не могу установить произвольные свойства для объекта Table - действительно, он отлично работает в отладке - но почему бы и нет, когда я отключил его?
(PS: я очистил все файлы кеша app/tmp.)