如何使用cakephp 2在视图中显示树视图
How to display treeview in view using cakephp 2
enter image description here大家好,我在 cakephp 2 中显示树视图时遇到问题...使用与 parents 相同的 table 和 child 作为关系。
Table 媒体目录
id
Title
Parent_id
1
Test 1
null
2
Test 2
null
3
Test 3
1
4
Test 4
1
5
Test 5
3
6
Test 6
2
7
Test 7
2
ContentsController.php
public function index()
{
$Treeview = $this->MediaDirectory->find("all",
array(
'conditions' => array(
'MediaDirectory.parent_id' => null
)
)
);
$this->set(compact('$Treeview'));
}
首先我不明白你的 table 中怎么会有 2 次名为 parent_id 的字段。您应该删除为空的那个。
您的 table 中需要 3 个不同的字段:
- parent_id存储父对象的id。
- lft存储当前行的lft值。
- rght 存储当前行的右值。
然后您需要在您的模型中添加以下行:
public $actsAs = array('Tree');
如果你想让它工作,你必须使用你的控制器插入你的数据。当你在其中保存一些数据时,lft 和 rght 由内核自动定义。
例如,在您的控制器中
$data['MediaDirectory']['parent_id'] = 10;
$data['MediaDirectory']['title'] = 'Test 1';
$this->MediaDirectory->save($data);
之后,您应该像这样替换控制器中的代码:
public function index() {
$Treeview = $this->MediaDirectory->find("threaded",
array(
'conditions' => array(
'MediaDirectory.parent_id'=> null,
'MediaDirectory.fk_id'=> $cid // Not sure what this is suppose to do
)
)
);
$this->set(compact('Treeview')); // TreeviewChild name was wrong
}
查询构建 find("threaded") 假设 return 树数据。不要犹豫,使用 debug() 函数来可视化您当前正在操作的数据。
版本 2.x 应有尽有:https://book.cakephp.org/2/en/core-libraries/behaviors/tree.html
enter image description here大家好,我在 cakephp 2 中显示树视图时遇到问题...使用与 parents 相同的 table 和 child 作为关系。
Table 媒体目录
id | Title | Parent_id |
---|---|---|
1 | Test 1 | null |
2 | Test 2 | null |
3 | Test 3 | 1 |
4 | Test 4 | 1 |
5 | Test 5 | 3 |
6 | Test 6 | 2 |
7 | Test 7 | 2 |
ContentsController.php
public function index()
{
$Treeview = $this->MediaDirectory->find("all",
array(
'conditions' => array(
'MediaDirectory.parent_id' => null
)
)
);
$this->set(compact('$Treeview'));
}
首先我不明白你的 table 中怎么会有 2 次名为 parent_id 的字段。您应该删除为空的那个。 您的 table 中需要 3 个不同的字段:
- parent_id存储父对象的id。
- lft存储当前行的lft值。
- rght 存储当前行的右值。
然后您需要在您的模型中添加以下行:
public $actsAs = array('Tree');
如果你想让它工作,你必须使用你的控制器插入你的数据。当你在其中保存一些数据时,lft 和 rght 由内核自动定义。
例如,在您的控制器中
$data['MediaDirectory']['parent_id'] = 10;
$data['MediaDirectory']['title'] = 'Test 1';
$this->MediaDirectory->save($data);
之后,您应该像这样替换控制器中的代码:
public function index() {
$Treeview = $this->MediaDirectory->find("threaded",
array(
'conditions' => array(
'MediaDirectory.parent_id'=> null,
'MediaDirectory.fk_id'=> $cid // Not sure what this is suppose to do
)
)
);
$this->set(compact('Treeview')); // TreeviewChild name was wrong
}
查询构建 find("threaded") 假设 return 树数据。不要犹豫,使用 debug() 函数来可视化您当前正在操作的数据。
版本 2.x 应有尽有:https://book.cakephp.org/2/en/core-libraries/behaviors/tree.html