generateTreeList() in CakePhp with Element



我的蛋糕 2.3 在 TreeBehavior::generateTreeList() 上遇到了一些问题;

我想在元素中使用此函数生成的列表。所以元素使用 $this->requestAction();并且该函数返回$treelist。但是我在嵌入元素的地方遇到以下错误:

错误: SQLSTATE[42000]: 语法错误或访问冲突: 1064 你 您的 SQL 语法有错误;检查对应于 您的 MySQL 服务器版本,用于在附近使用的正确语法 第 1 行的"生成树列表"

SQL 查询:生成树列表

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

堆栈跟踪

CORE\Cake\Model\Datasource\DboSource.php line 460 → PDOStatement->execute(array) CORE\Cake\Model\Datasource\DboSource.php 第 426 行 → DboSource->_execute(字符串,数组) 核心\蛋糕\模型\数据源\DboSource.php第 666 行→ DboSource->execute(string, array, array) 核心\蛋糕\模型\数据源\DboSource.php第 611 行→ DboSource->fetchAll(string, array, array) CORE\Cake\Model\Model.php 第 799 行 → DboSource->query(string, array, AppModel) APP\控制器\类别控制器.php第 14 行→ 模型>__call(字符串、数组) APP\控制器\类别控制器.php第 14 行→ AppModel->generateTreeList() [内部函数] → CategoriesController->tree() 核心\蛋糕\控制器\控制器.php第 486 行 → ReflectionMethod->invokeArgs(CategoriesController, array) 核心\蛋糕\路由\调度程序.php第 187 行→ Controller->invokeAction(CakeRequest) CORE\Cake\Routing\Dispatcher.php 162行 →调度程序->_invoke(类别控制器, CakeRequest, CakeResponse) CORE\Cake\Core\Object.php 行 104 → Dispatcher->dispatch(CakeRequest, CakeResponse, array) APP\View\Elements\categorieselement.ctp 第 4 行 → Object->requestAction(string) CORE\Cake\View\View.php 行 945 → include(string) CORE\Cake\View\View.php 行 907 → 视图>_evaluate(字符串、数组) 核心\蛋糕\视图\视图.php第 1208 行 → View->_render(字符串、数组) CORE\Cake\View\View.php 第 414 行 → 视图>_renderElement(字符串、数组、数组) APP\View\Posts\view.ctp 第 197 行 → 视图>元素(字符串) 核心\蛋糕\视图\视图.php第 945 行 → 包含(字符串) CORE\Cake\View\View.php 行 907 → 视图>_evaluate(字符串、数组) 核心\蛋糕\视图\视图.php第 471 行 → 视图>_render(字符串) CORE\Cake\Controller\Controller.php 第 948 行 → View->render(null, null) CORE\Cake\Routing\Dispatcher.php 第 194 行 → Controller->render()

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

我的错在哪里?树行为不能与元素一起使用吗?

感谢您的任何帮助。

请求后更新"也显示您的相关代码":

帖子/视图.ctp:

... 
echo '<hr><br><h3>Other Categories</h3>'; echo
$this->element('categorieselement'); 
...

Elements/categorieselement.ctp:(我现在只是没有比调试函数更多地打印结果。首先,结果应该有效,而不是我会关心显示。

<?php 
$trees = $this->requestAction('/categories/tree');
debug($trees); 
?>

类别控制器:补充一点:即使我向 generateTreeList-函数添加更多选项,错误仍然相同。如果我将"generateTreeList();"替换为"find();"我得到的结果显示在帖子/视图中,而不是错误。因此,元素和返回$data正在工作。

class CategoriesController extends AppController {
    public function beforeFilter() {
        parent::beforeFilter();
    }
    public function tree() {
        $data = $this->Category->generateTreeList();
        return $data;
    }
}

类别型号:

class Category extends AppModel {
    public $actsAs = array('Tree');
}

试试下面提到的这些链接

  • http://api.cakephp.org/2.4/class-TreeBehavior.html#_generateTreeList
  • http://book.cakephp.org/2.0/en/core-libraries/behaviors/tree.html#TreeBehavior::generateTreeList

@Burzum解决了它(见评论)他诊断出,树行为不会被加载,我应该检查一下。

我将这段代码添加到控制器的函数树中,为 100% shure:

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

最新更新