我的蛋糕 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');
}