CakePhp中带有元素的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是否不能与元素一起使用 谢谢你的帮助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
请求后更新“同时显示您的相关代码”: 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');
}