使用 OL 和 LI 显示树索引
由于我更喜欢使用原始助手和行为,因此我也将它用于我的树。在本文中,我想阐明如何使用无序列表甚至表格显示树。假设您在参考 树 时创建了数据库表,您应该能够在类别模型的控制器中使用以下代码
<?php
class CategoriesController extends AppController {
public function index() {
$categories = $this->Category->find('threaded', array(
'order' => array('Category.lft'))
);
$this->set('categories', $categories);
}
}
?>
这将返回一个包含所有类别的嵌套结构数组。
为了解析,或者我应该说,为了显示这个数组,而不必费心使用 UL 或 OL 标签,甚至表格,让我向您介绍递归函数
<?php
function RecursiveCategories($array) {
if (count($array)) {
echo "\n<ul>\n";
foreach ($array as $vals) {
echo "<li id=\"".$vals['Category']['id']."\">".$vals['Category']['name'];
if (count($vals['children'])) {
RecursiveCategories($vals['children']);
}
echo "</li>\n";
}
echo "</ul>\n";
}
} ?>
此函数为每个类别及其子类别返回一个 ul 和 li 列表。如果子类别有子类别,该函数会为它们自身调用自身,并返回另一个 ul。现在只需在您的视图中打印结果
<?= RecursiveCategories($categories) ?>
应该很容易添加用于上下移动类别,甚至删除的箭头。您只需将它们放在 li 中即可。