Как сделать меню динамическим на основе значений таблицы в php? - PullRequest
0 голосов
/ 27 сентября 2018

Следующая таблица содержит главное меню и подменю в одном столбце. Я упомянул menu_root_id для submenu на основе menu_code для различения main_menu и submenu.Мне нужно отобразить все submenu в mainmenu на основе таблицы динамически в следующем коде меню HTML.Пожалуйста, помогите мне, как это сделать?

enter image description here

Это мой HTML-код статического меню:

         <!-- sidebar menu -->
          <ul class="sidebar-menu" data-widget="tree">
            <li class="nav-devider"></li>
            <li class="header nav-small-cap"></li>

            <li class="treeview">
              <a href="#">
                <i class="fa fa-database"></i>
                <span>Main Menu1</span>
                <span class="pull-right-container">
                  <i class="fa fa-angle-right pull-right"></i>
                </span>
              </a>
              <ul class="treeview-menu">
                <li><a href="">Sub menu1</a></li>
                <li><a href="">Sub menu2</a></li>            
                <li><a href="">Sub menu3</a></li>
              </ul>
            </li>

             <li class="treeview">
              <a href="#">
                <i class="fa fa-user"></i>
                <span>Main Menu2</span>
                <span class="pull-right-container">
                  <i class="fa fa-angle-right pull-right"></i>
                </span>
              </a>
              <ul class="treeview-menu">
                <li><a href="">Sub menu4</a></li>
                <li><a href="">Sub menu5</a></li>            
                <li><a href="">Sub menu6</a></li>
              </ul>
            </li>
          </ul>

Это мой динамический код:но отображается неправильно.

                          <!-- sidebar menu -->
          <ul class="sidebar-menu" data-widget="tree">
            <li class="nav-devider"></li>
            <li class="header nav-small-cap"></li>
              <?php
                    $query =  $this->db->get('create_menu');
                    $this->db->order_by("menu_order_no", "asc");
                        if($query -> num_rows() > 0){
                            foreach ($query->result_array() as $row) {
                                 ?>
                <li class="treeview">
                      <a href="#">
                        <i class="fa fa-database"></i>
                        <span><?php if($row['menu_root_id'] == "")
                                 {  echo $row['menu_name']; }
                             ?>
                        </span>
                        <span class="pull-right-container">
                          <i class="fa fa-angle-right pull-right"></i>
                        </span>
                      </a>

                      <ul class="treeview-menu">
                                <?php ?> <li><a href=""><?php print_r($row['menu_name']); ?></a></li><?php  ?>
                      </ul>
                </li>
                    <?php   } }  ?>             
         </ul>

Ответы [ 2 ]

0 голосов
/ 27 сентября 2018

Попробуйте: -

<ul class="sidebar-menu" data-widget="tree">
  <li class="nav-devider"></li>
  <li class="header nav-small-cap"></li>
  <?php
    // Get here all the main menu's in $query by having the condition that menu_root_id=null
    if($query->num_rows() > 0) {
      foreach ($query->result_array() as $row) {
  ?>
  <li class="treeview">
    <a href="#">
      <i class="fa fa-database"></i>
      <span><?php echo $row['menu_name']; ?></span>
      <span class="pull-right-container">
        <i class="fa fa-angle-right pull-right"></i>
      </span>
    </a>
    <ul class="treeview-menu">
      <?php
        // Get here all the sub menu's in $query1 by having the condition that menu_root_id=$row['menu_code']
        if($query1->num_rows() > 0) {
          foreach ($query1->result_array() as $row1) {
      ?>
      <li><a href="<?php echo $row1['menu_path']; ?>"><?php echo $row1['menu_name']; ?></a></li>
      <?php
          }
        }
      ?>
    </ul>
  </li>
  <?php
      }
    }
  ?>
</ul>

Простой.Основная идея заключается в том, чтобы сначала получить все главное меню, а затем перебрать его.После этого переберите подменю и получите имя со ссылкой.
Я не знаю о CI.Поэтому я оставил область запроса в качестве комментария.

0 голосов
/ 27 сентября 2018

в первую очередь вы получаете код меню, когда идентификатор корневого меню равен нулю, затем вы получаете код меню, а затем вы можете получить соответствующий результат кода меню в соответствии со мной.

код, подобный этому, выберите код меню из имени таблицы, где идентификатор корневого менюnull

затем

выберите * из имени таблицы, где корень меню id = код меню

я думаю, вы примените этот подход один раз

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...