I am facing some problems with TreeBehaviour::generateTreeList() with my cake 2.3;
I want to use the List generated by this function in an Element. So the Element uses $this->requestAction(); and the function returns $treelist. But I get following Error where I embedded the Element:
Error: SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'generateTreeList' at line 1
SQL Query: generateTreeList
Notice: If you want to customize this error message, create app\View\Errors\pdo_error.ctp
Stack Trace
CORE\Cake\Model\Datasource\DboSource.php line 460 → PDOStatement->execute(array) CORE\Cake\Model\Datasource\DboSource.php line 426 → DboSource->_execute(string, array) CORE\Cake\Model\Datasource\DboSource.php line 666 → DboSource->execute(string, array, array) CORE\Cake\Model\Datasource\DboSource.php line 611 → DboSource->fetchAll(string, array, array) CORE\Cake\Model\Model.php line 799 → DboSource->query(string, array, AppModel) APP\Controller\CategoriesController.php line 14 → Model->__call(string, array) APP\Controller\CategoriesController.php line 14 → AppModel->generateTreeList() [internal function] → CategoriesController->tree() CORE\Cake\Controller\Controller.php line 486 → ReflectionMethod->invokeArgs(CategoriesController, array) CORE\Cake\Routing\Dispatcher.php line 187 → Controller->invokeAction(CakeRequest) CORE\Cake\Routing\Dispatcher.php line 162 → Dispatcher->_invoke(CategoriesController, CakeRequest, CakeResponse) CORE\Cake\Core\Object.php line 104 → Dispatcher->dispatch(CakeRequest, CakeResponse, array) APP\View\Elements\categorieselement.ctp line 4 → Object->requestAction(string) CORE\Cake\View\View.php line 945 → include(string) CORE\Cake\View\View.php line 907 → View->_evaluate(string, array) CORE\Cake\View\View.php line 1208 → View->_render(string, array) CORE\Cake\View\View.php line 414 → View->_renderElement(string, array, array) APP\View\Posts\view.ctp line 197 → View->element(string) CORE\Cake\View\View.php line 945 → include(string) CORE\Cake\View\View.php line 907 → View->_evaluate(string, array) CORE\Cake\View\View.php line 471 → View->_render(string) CORE\Cake\Controller\Controller.php line 948 → View->render(null, null) CORE\Cake\Routing\Dispatcher.php line 194 → Controller->render()
I have verfied 100 times beeing very close to the manual regarding the function and everything. I have checked $actsAs beeing spelled correctly. If I don't use generateTreeList() but just find('list') I get output as expected.
Where is my fault? Is TreeBehaviour not usable with with Elements?
Thanks for any Help.
Update after request "Show your related code as well":
Posts/view.ctp:
...
echo '<hr><br><h3>Other Categories</h3>'; echo
$this->element('categorieselement');
...
Elements/categorieselement.ctp: (I just didn't put more on printing the result than the debug function right now. First the result should work, than I will care about displaying.)
<?php
$trees = $this->requestAction('/categories/tree');
debug($trees);
?>
CategoriesController: Just to add: Even if I add more Options to the generateTreeList-Function, the Error remains the same. If I replace "generateTreeList();" by "find();" I get a result displayed in posts/view and not an Error. So the element and returning $data is working.
class CategoriesController extends AppController {
public function beforeFilter() {
parent::beforeFilter();
}
public function tree() {
$data = $this->Category->generateTreeList();
return $data;
}
}
Category Model:
class Category extends AppModel {
public $actsAs = array('Tree');
}