我已经使用 fancytree 构建了类别树。从根开始的每个节点的深度必须等于 4,所以我可能有:
- 类别
- 子类别 1
- 子类别 2
- 子类别 4
- 子类别 5
- 子类别 6
- 子类别 2
- 子类别 1
脚本应该只允许将这种结构保存到数据库。我试图在 Fancytree API 中找到一些与深度相关的方法,但我找不到合适的方法。
我决定编写后端验证,我有类似的东西:
private function validateTree($tree)
{
foreach($tree as $node)
{
$parentName = $node['title'];
if(isset($node['children']) and is_array($node['children']))
{
if($this->validateLevel($node['children']) < 4)
{
$this->errors[] = $parentName;
}
}
else
{
$this->errors[] = $parentName;
}
}
}
private function validateLevel($nodes, &$depth = 2)
{
foreach($nodes as $node)
{
if(isset($node['children']) and !empty($node['children']) and is_array($node['children']))
{
$this->validateLevel($node['children'], ++$depth);
}
else
{
return $depth;
}
}
}
这不能按预期工作,并且可能不会验证每个根节点的每个子节点。有任何想法吗?