Никак не могу понять, почему рушится дерево, в проекте симфони делаю так:
Есть сервис который отвечает за сортировку по ключам родителей в массиве
public function persistviewtree($arr){
return $this->viewtree($arr, 0);
}
public function viewtree($arr, $root){
if(is_array($arr) and isset($arr[$root])){
$str = "<ul>";
foreach ($arr[$root] as $r) {
$str .= "<li data-node=".$r['id']." style=\"position:relative;\" class=\"list-group-item\">
<a href=\"/wikiedit/".$r['id']."\">".$r['name']."</a>
<i class=\"glyphicon glyphicon-remove pull-right\" style=\"cursor:pointer;\" onclick=\"R.wiki.delete(".$r['id'].");\</i>";
$str .= $this->viewtree($arr, $r['id']);
$str .= "</li>";
}
$str .= "</ul>";
} else {
return false;
}
return $str;
}
Есть массив вида
вызов функции persistviewtree происходит в контроллере
оттуда уже обычной переменной отдаётся в шаблон.
В примечание скажу что, если в первой ячейке представленного массива ключ 0
то всё работает правильно, если же так как сейчас на картинке, то дерево отображается или частично, или совсем пропадает.
Если тот же эксперимент повторить в процедурной среде, то всё работает вообще без проблем.