【问题标题】:Dynamic menu via PHP通过 PHP 的动态菜单
【发布时间】:2021-02-18 00:41:51
【问题描述】:

下面的代码正确生成了一个带有 UL 和 LI 的菜单,但我需要添加其他信息以使代码有点不同。

<?php
$items = array ( 1 => array ( 'parent' => '0', 'tit_pag' => 'Inicial', 'url_pag' => '/', 'target_url' => '_self', 'id' => '1', ), 2 => array ( 'parent' => '0', 'tit_pag' => 'Principal 1', 'url_pag' => '/', 'target_url' => '_self', 'id' => '2', 'child' => array ( 3 => array ( 'parent' => '2', 'tit_pag' => 'Item 1', 'url_pag' => 'link1.html', 'target_url' => '_self', 'id' => '3', ), 4 => array ( 'parent' => '2', 'tit_pag' => 'Item 2', 'url_pag' => 'link2.html', 'target_url' => '_self', 'id' => '4', ), 5 => array ( 'parent' => '2', 'tit_pag' => 'Item 3', 'url_pag' => 'link3.html', 'target_url' => '_self', 'id' => '5', ), ), ), 6 => array ( 'parent' => '0', 'tit_pag' => 'Principal 2', 'url_pag' => '#', 'target_url' => '_self', 'id' => '6', 'child' => array ( 7 => array ( 'parent' => '6', 'tit_pag' => 'Item 4', 'url_pag' => 'link4.html', 'target_url' => '_self', 'id' => '7', ), 8 => array ( 'parent' => '6', 'tit_pag' => 'Item 5', 'url_pag' => 'link5.html', 'target_url' => '_self', 'id' => '8', ), 9 => array ( 'parent' => '6', 'tit_pag' => 'Item 6', 'url_pag' => 'link6.html', 'target_url' => '_self', 'id' => '9', ), ), ), 10 => array ( 'parent' => '0', 'tit_pag' => 'Principal 3', 'url_pag' => 'link7.html', 'target_url' => '_self', 'id' => '10', ), 11 => array ( 'parent' => '0', 'tit_pag' => 'Principal 4', 'url_pag' => 'link8.html', 'target_url' => '_self', 'id' => '11', ), );

function get_menu($items) {
    $html = "<ul>";
    foreach($items as $key=>$value) {
        $html.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';
        if(array_key_exists('child',$value)) {
            $html .= get_menu($value['child'],'child');
        }
            $html .= "</li>";
    }
    $html .= "</ul>";
    return $html;
}
print get_menu($items);
?>

以上代码的结果

<ul>
    <li><a href="//" target="_self">Inicial</a></li>
    <li>
        <a href="//" target="_self">Principal 1</a>
        <ul>
            <li><a href="/link1.html" target="_self">Item 1</a></li>
            <li><a href="/link2.html" target="_self">Item 2</a></li>
            <li><a href="/link3.html" target="_self">Item 3</a></li>
        </ul>
    </li>
    <li>
        <a href="/#" target="_self">Principal 2</a>
        <ul>
            <li><a href="/link4.html" target="_self">Item 4</a></li>
            <li><a href="/link5.html" target="_self">Item 5</a></li>
            <li><a href="/link6.html" target="_self">Item 6</a></li>
        </ul>
    </li>
    <li><a href="/link7.html" target="_self">Principal 3</a></li>
    <li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>

我需要的结果

<ul class="nav navbar-nav">
    <li><a href="//" target="_self">Inicial</a></li>
    <li class="dropdown submenu">
        <a href="//" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 1 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
        <ul class="dropdown-menu">
            <li><a href="link1.html" target="_self">Item 1</a></li>
            <li><a href="link2.html" target="_self">Item 2</a></li>
            <li><a href="link3.html" target="_self">Item 3</a></li>
        </ul>
    </li>
    <li class="dropdown submenu">
        <a href="/#" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 2 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
        <ul class="dropdown-menu">
            <li><a href="/link4.html" target="_self">Item 4</a></li>
            <li><a href="/link5.html" target="_self">Item 5</a></li>
            <li><a href="/link6.html" target="_self">Item 6</a></li>
        </ul>
    </li>
    <li><a href="/link7.html" target="_self">Principal 3</a></li>
    <li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>

我无法修改 php 代码以达到预期的效果。如果有人可以帮助我,我将不胜感激。

【问题讨论】:

  • 很抱歉,到底是什么问题?
  • @Almaju PHP代码的结果生成了一个菜单,我需要添加信息,使其与发布的第二个代码相同。
  • 你应该给我们提供一个更简单的场景,并清楚地解释你现在不能做什么。我们来这里是为了帮助,而不是为你工作。 :)

标签: php menu submenu


【解决方案1】:

我设法通过创建另一个函数来解决它来生成子菜单

<?php
    $items = array ( 1 => array ( 'parent' => '0', 'tit_pag' => 'Inicial', 'url_pag' => '/', 'target_url' => '_self', 'id' => '1', ), 2 => array ( 'parent' => '0', 'tit_pag' => 'Principal 1', 'url_pag' => '/', 'target_url' => '_self', 'id' => '2', 'child' => array ( 3 => array ( 'parent' => '2', 'tit_pag' => 'Item 1', 'url_pag' => 'link1.html', 'target_url' => '_self', 'id' => '3', ), 4 => array ( 'parent' => '2', 'tit_pag' => 'Item 2', 'url_pag' => 'link2.html', 'target_url' => '_self', 'id' => '4', ), 5 => array ( 'parent' => '2', 'tit_pag' => 'Item 3', 'url_pag' => 'link3.html', 'target_url' => '_self', 'id' => '5', ), ), ), 6 => array ( 'parent' => '0', 'tit_pag' => 'Principal 2', 'url_pag' => '#', 'target_url' => '_self', 'id' => '6', 'child' => array ( 7 => array ( 'parent' => '6', 'tit_pag' => 'Item 4', 'url_pag' => 'link4.html', 'target_url' => '_self', 'id' => '7', ), 8 => array ( 'parent' => '6', 'tit_pag' => 'Item 5', 'url_pag' => 'link5.html', 'target_url' => '_self', 'id' => '8', ), 9 => array ( 'parent' => '6', 'tit_pag' => 'Item 6', 'url_pag' => 'link6.html', 'target_url' => '_self', 'id' => '9', ), ), ), 10 => array ( 'parent' => '0', 'tit_pag' => 'Principal 3', 'url_pag' => 'link7.html', 'target_url' => '_self', 'id' => '10', ), 11 => array ( 'parent' => '0', 'tit_pag' => 'Principal 4', 'url_pag' => 'link8.html', 'target_url' => '_self', 'id' => '11', ), );
    
    function get_submenu($items) {
        $html2 = '<ul class="dropdown-menu">';
        foreach($items as $key=>$value) {
            $html2.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';
            if(array_key_exists('child',$value)) {
                $html2 .= get_submenu($value['child'],'child');
            }
                $html2 .= "</li>";
        }
        $html2 .= '</ul>';
        return $html2;
    }               
    
    function get_menu($items) {
        $html = '<ul class="nav navbar-nav">';
        foreach($items as $key=>$value) {
            if(array_key_exists('child',$value)) {
            $html.= '<li class="dropdown submenu"><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">'.$value['tit_pag'].' <i class="fa fa-angle-down" aria-hidden="true"></i></a>';
            }else{
            $html.= '<li><a href="/'.$value['url_pag'].'" target="'.$value['target_url'].'">'.$value['tit_pag'].'</a>';}
            if(array_key_exists('child',$value)) {
                $html .= get_submenu($value['child'],'child');
            }
                $html .= "</li>";
        }
        $html .= '</ul>';
        return $html;
    }
    print get_menu($items);
?>

结果

<ul class="nav navbar-nav">
    <li><a href="//" target="_self">Inicial</a></li>
    <li class="dropdown submenu">
        <a href="//" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 1 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
        <ul class="dropdown-menu">
            <li><a href="/link1.html" target="_self">Item 1</a></li>
            <li><a href="/link2.html" target="_self">Item 2</a></li>
            <li><a href="/link3.html" target="_self">Item 3</a></li>
        </ul>
    </li>
    <li class="dropdown submenu">
        <a href="/#" target="_self" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Principal 2 <i class="fa fa-angle-down" aria-hidden="true"></i></a>
        <ul class="dropdown-menu">
            <li><a href="/link4.html" target="_self">Item 4</a></li>
            <li><a href="/link5.html" target="_self">Item 5</a></li>
            <li><a href="/link6.html" target="_self">Item 6</a></li>
        </ul>
    </li>
    <li><a href="/link7.html" target="_self">Principal 3</a></li>
    <li><a href="/link8.html" target="_self">Principal 4</a></li>
</ul>

【讨论】:

    猜你喜欢
    • 2017-09-24
    • 2013-06-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多