CakePhp中带有元素的generateTreeList()

CakePhp中带有元素的generateTreeList(),php,cakephp,cakephp-2.3,Php,Cakephp,Cakephp 2.3,我的cake 2.3在Treebhaviour::generateTreeList()方面遇到了一些问题 我想在元素中使用此函数生成的列表。 因此元素使用$this->requestAction();函数返回$treelist。 但我在嵌入元素时出现以下错误: 错误:SQLSTATE[42000]:语法错误或访问冲突:1064您 SQL语法有错误;检查相应的手册 您的MySQL服务器版本需要使用正确的语法 第1行的“generateTreeList” SQL查询:generateTreeList

我的cake 2.3在Treebhaviour::generateTreeList()方面遇到了一些问题

我想在元素中使用此函数生成的列表。 因此元素使用$this->requestAction();函数返回$treelist。 但我在嵌入元素时出现以下错误:

错误:SQLSTATE[42000]:语法错误或访问冲突:1064您 SQL语法有错误;检查相应的手册 您的MySQL服务器版本需要使用正确的语法 第1行的“generateTreeList”

SQL查询:generateTreeList

注意:如果要自定义此错误消息,请创建 app\View\Errors\pdo_error.ctp

堆栈跟踪

CORE\Cake\Model\Datasource\DboSource.php第460行→ PDOStatement->execute(array)CORE\Cake\Model\Datasource\DboSource.php 第426行→ DboSource->\u执行(字符串、数组) CORE\Cake\Model\Datasource\DboSource.php第666行→ DboSource->execute(字符串、数组、数组) CORE\Cake\Model\Datasource\DboSource.php第611行→ DboSource->fetchAll(字符串、数组、数组)CORE\Cake\Model\Model.php 第799行→ DboSource->query(字符串、数组、AppModel) APP\Controller\CategoriesController.php第14行→ 模型->\u调用(字符串、数组) APP\Controller\CategoriesController.php第14行→ AppModel->generateTreeList()[内部函数]→ 分类控制器->树() CORE\Cake\Controller\Controller.php行486→ ReflectionMethod->invokeArgs(分类控制器,数组) CORE\Cake\Routing\Dispatcher.php第187行→ Controller->invokeAction(CakeRequest)CORE\Cake\Routing\Dispatcher.php 第162行→ 调度程序->\u调用(分类控制器, CakeRequest,CakeResponse)CORE\Cake\CORE\Object.php第104行→ 调度程序->调度(CakeRequest、CakeResponse、数组) APP\View\Elements\categorieselement.ctp第4行→ Object->requestAction(string)CORE\Cake\View\View.php第945行→ 包括(字符串)CORE\Cake\View\View.php第907行→ View->_evaluate(字符串、数组)CORE\Cake\View\View.php第1208行→ View->_render(字符串、数组)CORE\Cake\View\View.php第414行→ 视图->\u渲染(字符串、数组、数组) APP\View\Posts\View.ctp第197行→ 查看->元素(字符串) CORE\Cake\View\View.php第945行→ 包括(字符串) CORE\Cake\View\View.php行907→ 查看->\u求值(字符串、数组) CORE\Cake\View\View.php第471行→ 查看->渲染(字符串) CORE\Cake\Controller\Controller.php行948→ 查看->渲染(空, null)CORE\Cake\Routing\Dispatcher.php第194行→ 控制器->渲染()

关于功能和所有方面,我已经验证了100次,非常接近手册。我检查了$actsAs BEING的拼写是否正确。 如果我不使用generateTreeList(),而只使用find('list'),我将获得预期的输出

我的错在哪里?TreeBehaviour是否不能与元素一起使用

谢谢你的帮助


请求后更新“同时显示您的相关代码”:

Posts/view.ctp:

... 
echo '<hr><br><h3>Other Categories</h3>'; echo
$this->element('categorieselement'); 
...
类别模型:

class Category extends AppModel {

    public $actsAs = array('Tree');

}

试试下面提到的这些链接

    • @Burzum解决了这个问题(见评论) 他诊断,树的行为不会被加载,我应该检查它

      我将此代码添加到控制器的功能树中,即100%舒尔:

      if($this->Category->Behaviors->loaded('Tree') != true){
          $this->Category->Behaviors->load('Tree');
      }
      

      我使用这些内容查找故障。我找不到元素中的generateTreeList不应工作的任何详细信息。同时显示相关代码。问题中提供了请求的代码。请尝试不要使用requestAction(),而是通过组件从控制器向下传递数据。代码似乎正确,但“SQL查询:generateTreeList”表示未加载该模型实例的行为。该错误是无法访问的行为发生的默认错误。尝试调试($this->Category Behaviors->loaded('Tree'));在调用generateTreeList()之前,如果它返回false,请尝试调用Behaviors->load('Tree');怎么用?有关于组件的教程吗?没有,我没有。这是症状,不是原因!此代码仅用于调试,以查看行为是否已加载。
      class Category extends AppModel {
      
          public $actsAs = array('Tree');
      
      }
      
      if($this->Category->Behaviors->loaded('Tree') != true){
          $this->Category->Behaviors->load('Tree');
      }