Баг или фича? buildTree в pdoTools не строит
Использую pdomenu для генерации дерева ресурсов начиная с определенной категории. Если коротко — не работает по крайней мере в одном случае. Ниже объясняю в каком.
Вызываю так
Результат — pdoMenu ничего не выводит. Путем дебага выяснил что в методе pdoTools->buildTree не формируется дерево.
Обновление pdoTools не помогло.
Вся магия построения происходит тут
Для того чтобы у меня на сайте работало как надо мне, я добавил третье условие во 2 цикл, in_array($row[$parent], $roots), и как временное решение это работает, но все же мне совсем не понятно почему pdoMenu не строит дерево не от корня.
И хотелось бы какое то перманентное решение.
Если я не понятно изъяснился, задавайте вопросы, как мне кажется довольно существенная проблемка.
Вызываю так
[[!pdoMenu?
&parents=`152`
&resources=`183,411,412,414`
]]
где 411,412,414 — дети ресурса 183. В свою очередь 183 это потомок ресурса 152 из которого строю дерево.Результат — pdoMenu ничего не выводит. Путем дебага выяснил что в методе pdoTools->buildTree не формируется дерево.
Обновление pdoTools не помогло.
Вся магия построения происходит тут
$rows = $tree = array();
foreach ($tmp as $v) {
$rows[$v[$id]] = $v;
}
foreach ($rows as $id => &$row) {
if (empty($row[$parent]) || (!isset($rows[$row[$parent]]) && in_array($id, $roots))) {
$tree[$id] = &$row;
} else {
$rows[$row[$parent]]['children'][$id] = &$row;
}
}
В моем же случае parent всегда есть (ни одного корневого элемента в &resources) и $id никогда не будет в $roots, поэтому во 2 цикле всегда отработает только 2 условие. При этом в массив $tree вообще ничего не попадает, и функция возвращает пустой массив.Для того чтобы у меня на сайте работало как надо мне, я добавил третье условие во 2 цикл, in_array($row[$parent], $roots), и как временное решение это работает, но все же мне совсем не понятно почему pdoMenu не строит дерево не от корня.
И хотелось бы какое то перманентное решение.
Если я не понятно изъяснился, задавайте вопросы, как мне кажется довольно существенная проблемка.
Комментарии: 7
github.com/bezumkin/pdoTools/issues/new
А лучше сразу pull request с твоим исправлением.
А лучше сразу pull request с твоим исправлением.
Запросто) будет
Что-то я сначала смерджил, а потом решил проверить. И не могу никак воспроизвести твой баг.
Покажи, пожалуйста, как у тебя эти ресурсы в дереве расположены?
Покажи, пожалуйста, как у тебя эти ресурсы в дереве расположены?
take.ms/Scyn8
Категория, в ней категория тикетов, в ней 3 тикета.
Кстати если указать только 183 в &resources, то pdoMenu выведет его.
Если указать его с дочерними, то не выводит.
Если указать еще одну категорию тикетов, в &resources, то правильно выведет обе ветки.
Сам запутался
Категория, в ней категория тикетов, в ней 3 тикета.
Кстати если указать только 183 в &resources, то pdoMenu выведет его.
Если указать его с дочерними, то не выводит.
Если указать еще одну категорию тикетов, в &resources, то правильно выведет обе ветки.
Сам запутался
&resources=`183` — выводит
&resources=`411`, или любой другой тикет внутри — выводит
&resources=`183,411` — ничего не выводит
&resources=`183,411, любая другая категория тикетов на одном уровне со 183` — все выводится ок
&resources=`411`, или любой другой тикет внутри — выводит
&resources=`183,411` — ничего не выводит
&resources=`183,411, любая другая категория тикетов на одном уровне со 183` — все выводится ок
Авторизуйтесь или зарегистрируйтесь, чтобы оставлять комментарии.