Добрый день. Помогите найти ошибку, уже несколько раз с нуля переписывал.
В общем пытаюсь вывести меню. Меню выводится и сортируется в нужном мне порядке все отлично, но вот один баг который не могу не как исправить, дублируются пункты меню, при чем не все, а только со второй вложенности. В базе пункты в единственном экземпляре. Есть массив главный массив $nodes с которого я и достаю все пункты меню. Сам класс который выводит меню.
class Menu
{
public function renderMenu($nodes)
{
$subMenu = [];
$lines = [];
foreach ($nodes['nodes'] as $node)
{
if($node['is_visible_for_all']){
if(count($node['nodes']) > 0){
if($node['navigations_types__alias'] == 'section'){
//megamenu
if($node['is_visible_for_all']){
$sort = $node['sort_no'];
$alias = $node['alias'];
$label = $node['navigation_label'];
$megaMenu[] = "<li data-sort='$sort' class='dropdown dropdown-megamenu'><a href='$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a><ul class='dropdown-menu'><li><div class='header-navigation-content'><div class='row'>";
foreach ($node['nodes'] as $m_node)
{
$sort = $m_node['sort_no'];
$alias = $m_node['alias'];
$label = $m_node['navigation_label'];
$headMenu[] = "<div data-sort='$sort' class='col-md-6 header-navigation-col'><h4><a href='$alias'>$label</a></h4><ul></ul></div>";
asort($headMenu);
$headMenu_str = implode('', $headMenu);
$megaMenuStr = implode('', $megaMenu);
$megaMenuStr .= $headMenu_str . "</li></div></div></ul></li>";
unset($m_node);
}
array_push($lines, $megaMenuStr);
}
}else{
//menu
$sort = $node['sort_no'];
$alias = $node['alias'];
$label = $node['navigation_label'];
$mainMenu= "<li data-sort='$sort' class='dropdown'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a><ul class='dropdown-menu'>";
foreach ($node['nodes'] as $nodes)
{
if($nodes['is_visible_for_all']){
if(count($nodes['nodes']) > 0){
//submenu
$sort = $nodes['sort_no'];
$alias = $nodes['alias'];
$label = $nodes['navigation_label'];
$subMenu[] = "<li data-sort='$sort' class='dropdown-submenu'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a>";
foreach ($nodes['nodes'] as $subnodes)
{
if(count($subnodes['nodes']) > 0){
if($subnodes['is_visible_for_all'])
{
$sort = $subnodes['sort_no'];
$alias = $subnodes['alias'];
$label = $subnodes['navigation_label'];
$sub_sub_menu_title[] = "<li data-sort='$sort' class='dropdown-submenu'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a>";
asort($sub_sub_menu_title);
$a = array_unique($sub_sub_menu_title);
var_dump($a);
}
}else
{
//subsubmenu
$sort = $subnodes['sort_no'];
$alias = $subnodes['alias'];
$label = $subnodes['navigation_label'];
$sub_sub_menu[] = "<li data-sort='$sort'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a></li>";
asort($sub_sub_menu);
}
unset($subnodes);
}
$sub_sub_menu_str = "<ul class='dropdown-menu'>";
$sub_sub_menu_str .= implode('', $sub_sub_menu);
$sub_sub_menu_str .= "</ul></li>";
array_push($subMenu, $sub_sub_menu_str);
}else{
//submenu
$sort = $nodes['sort_no'];
$alias = $nodes['alias'];
$label = $nodes['navigation_label'];
$subMenu1 = "<li data-sort='$sort'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a></li>";
array_push($subMenu, $subMenu1);
asort($subMenu);
}
}
unset($nodes);
}
$mainMenu.= implode('', $subMenu);
$mainMenu .="</li></ul>";
array_push($lines, $mainMenu);
}
}else{
//menu
$sort = $node['sort_no'];
$alias = $node['alias'];
$label = $node['navigation_label'];
$lines[] = "<li data-sort='$sort'><a href='/$alias' class='dropdown-toggle' data-toggle='dropdown' data-target='#'>$label</a></li>";
asort($lines);
}
}
unset($node);
}
asort($lines);
$menu = implode('', $lines);
return "<ul>" . $menu . "</ul>";
}
}
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Ребят есть вот база, и в нем таблица ocmc_t_item, как мне вытащить из этой таблицы количество записей: за последнее неделю, за последний месяц и общее...
Собственно, в заголовке весь вопросПосоветуйте какой-нибудь материал для изучения (желательно на русском языке)
Наверно мне сложно выразить свои мысли так как я не профессионалВ базе данных есть продукты