带有Element的CakePhp中的generateTreeList()

时间:2015-01-05 07:08:31

标签: php cakephp cakephp-2.3

我遇到了TreeBehaviour :: generateTreeList()与我的蛋糕2.3的一些问题;

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

  

错误:SQLSTATE [42000]:语法错误或访问冲突:1064您   您的SQL语法有错误;检查对应的手册   您的MySQL服务器版本,以便在附近使用正确的语法   ' generateTreeList'在第1行

     

SQL查询:generateTreeList

     

注意:如果要自定义此错误消息,请创建   应用\视图\错误\ pdo_error.ctp

     

堆栈跟踪

     

CORE \ Cake \ Model \ Datasource \ DboSource.php第460行→   PDOStatement->执行(数组)CORE \ Cake \ Model \ Datasource \ DboSource.php   第426行→DboSource-> _execute(字符串,数组)   CORE \ Cake \ Model \ Datasource \ DboSource.php第666行→   DboSource->执行(字符串,数组,数组)   CORE \ Cake \ Model \ Datasource \ DboSource.php第611行→   DboSource-> fetchAll(字符串,数组,数组)CORE \ Cake \ Model \ Model.php   799行→DboSource->查询(字符串,数组,AppModel)   APP \ Controller \ CategoriesController.php第14行→   模型 - > __调用(字符串,数组)   APP \ Controller \ CategoriesController.php第14行→   AppModel-> generateTreeList()[内部函数]→   CategoriesController->树()   CORE \ Cake \ Controller \ Controller.php第486行→   ReflectionMethod-> invokeArgs(CategoriesController,array)   CORE \ Cake \ Routing \ Dispatcher.php第187行→   Controller-> invokeAction(CakeRequest)CORE \ Cake \ Routing \ Dispatcher.php   第162行→Dispatcher-> _invoke(CategoriesController,   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行→   View-> _evaluate(string,array)CORE \ Cake \ View \ View.php第1208行→   View-> _render(string,array)CORE \ Cake \ View \ View.php第414行→   View-> _renderElement(string,array,array)   APP \ View \ Posts \ view.ctp第197行→View->元素(字符串)   CORE \ Cake \ View \ View.php第945行→include(字符串)   CORE \ Cake \ View \ View.php第907行→View-> _evaluate(string,array)   CORE \ Cake \ View \ View.php第471行→View-> _render(string)   CORE \ Cake \ Controller \ Controller.php第948行→View-> render(null,   null)CORE \ Cake \ Routing \ Dispatcher.php第194行→Controller-> render()

关于功能和一切,我已经完成了100次非常接近手册的测试。我检查了$ actsAs正确拼写。 如果我不使用generateTreeList()但只是找到(' list')我会按预期输出。

我的错在哪里? TreeBehaviour不能与Elements一起使用吗?

感谢您的帮助。

请求后更新"同时显示您的相关代码"

帖子/ view.ctp:

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

元素/ categorieselement.ctp: (我现在没有比调试功能更多地打印结果。首先结果应该可行,而不是我关心显示。)

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

CategoriesController: 只是添加:即使我向generateTreeList-Function添加了更多选项,错误也保持不变。 如果我替换&#34; generateTreeList();&#34; by&#34; find();&#34;我在帖子/视图中显示结果而不是错误。所以元素和返回的$ 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');

}

2 个答案:

答案 0 :(得分:0)

答案 1 :(得分:-1)

@Burzum解决了它(见评论) 他诊断出,Tree-Behavior不会被加载,我应该检查它。

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

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