Maison  >  Article  >  développement back-end  >  thinkPHP implémente la fonction de menu de liaison

thinkPHP implémente la fonction de menu de liaison

不言
不言original
2018-06-07 14:35:472416parcourir

Cet article présente principalement la fonction de menu de liaison implémentée par thinkPHP, et analyse les étapes de mise en œuvre et les techniques de fonctionnement spécifiques du menu de liaison thinkPHP sous forme d'exemples. Les amis dans le besoin peuvent s'y référer

Cet article décrit. l'implémentation de thinkPHP avec des exemples de fonction de menu de liaison. Partagez-le avec tout le monde pour votre référence, les détails sont les suivants :

Menu de liens, laissez-moi d'abord vous montrer comment l'écrire sur le front-end :

<p id="newCat">
  <p class="all_type" id="allGoogsCat">所有商品分类</p>
  <p class="spfl-warp <?php if(CONTROLLER_NAME != &#39;Index&#39; || ACTION_NAME != &#39;index&#39;){echo &#39;hide&#39;;} ?> ">
    <p class="index-spfl-left" id="pCatList">
      <ul>
        <foreach name="category_menu" key="one" item="v">
        <li class="li{$one+1}">
          <span><em></em>
            <a href="{:U(&#39;Category/index&#39;,array(&#39;id&#39;=>$v[&#39;category_id&#39;],&#39;level&#39;=>1))}" rel="external nofollow" >{$v.category_name}</a>
          </span>
          <p class="p none">
            <foreach name="v[&#39;childs&#39;]" key="two" item="v2">
              <dl>
                <dt>
                  <a href="{:U(&#39;Category/index&#39;,array(&#39;id&#39;=>$v2[&#39;category_id&#39;],&#39;level&#39;=>2))}" rel="external nofollow" >{$v2.category_name}</a>
                </dt>
                <dd class="fl">
                  <foreach name="v2[&#39;childs&#39;]" item="v3">
                    <a href="{:U(&#39;Category/index&#39;,array(&#39;id&#39;=>$v3[&#39;category_id&#39;],&#39;level&#39;=>3))}" rel="external nofollow" >
                      {$v3.category_name}
                    </a>
                  </foreach>
                </dd>
                <p class="cl"></p>
              </dl>
            </foreach>
          </p>
        </li>
      </foreach>
    </ul>
  </p>
  </p>
</p>
<script type="text/javascript">
<?php if(CONTROLLER_NAME != &#39;Index&#39; || ACTION_NAME != &#39;index&#39;){ ?>
  //商品分类鼠标滑过
  function spflHover() {
    $(".index-spfl-left ul li").live("mouseover", function () {
      $(this).addClass("active").siblings().removeClass("active");
      $(".index-spfl-left").find(".p").hide();
      $(this).find(".p").show();
    }).live("mouseout", function () {
      $(this).removeClass("active");
      $(".index-spfl-left").find(".p").hide();
      $(this).find(".p").hide();
    });
    //鼠标滑过分类显示
    $("#newCat").mouseover(function () {
      $(".spfl-warp").show();
    }).mouseout(function () {
      if ($("#ismain").val() == "1") {
        $(".spfl-warp").show();
      } else {
        $(".spfl-warp").hide();
      }
    })
  }
  spflHover();
<?php } ?>
</script>

Avez-vous vu qu'en fait, le menu du premier niveau correspond au menu du deuxième niveau dans le même Li. Le deuxième niveau et le troisième niveau. les menus dans li sont tous placés dans le dt et le dt de dl. À l'intérieur de la balise dd

Alors maintenant, jetons un coup d'œil aucategory_menu retiré, de quel type de données il s'agit :

Array
(
 [0] => Array
  (
   [category_id] => 84
   [category_name] => 家装主材
   [parent_id] => 0
   [listorder] => 200
   [display] => 1
   [childs] => Array
    (
     [0] => Array
      (
       [category_id] => 85
       [category_name] => 厨卫
       [parent_id] => 84
       [listorder] => 200
       [display] => 1
       [childs] => Array
        (
         [0] => Array
          (
           [category_id] => 99
           [category_name] => 厨盆/水槽
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [1] => Array
          (
           [category_id] => 98
           [category_name] => 卫浴配件
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [2] => Array
          (
           [category_id] => 97
           [category_name] => 卫浴龙头
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [3] => Array
          (
           [category_id] => 96
           [category_name] => 龙头
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [4] => Array
          (
           [category_id] => 95
           [category_name] => 淋浴房
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [5] => Array
          (
           [category_id] => 94
           [category_name] => 智能坐便器
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [6] => Array
          (
           [category_id] => 93
           [category_name] => 浴室柜
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [7] => Array
          (
           [category_id] => 92
           [category_name] => 坐便器
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [8] => Array
          (
           [category_id] => 91
           [category_name] => 浴霸
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [9] => Array
          (
           [category_id] => 90
           [category_name] => 地漏
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [10] => Array
          (
           [category_id] => 89
           [category_name] => 坐便器盖板
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [11] => Array
          (
           [category_id] => 88
           [category_name] => 洗面盆
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [12] => Array
          (
           [category_id] => 87
           [category_name] => 角阀
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [13] => Array
          (
           [category_id] => 100
           [category_name] => 卫浴五金
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [14] => Array
          (
           [category_id] => 101
           [category_name] => 厨房挂件/配件
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [15] => Array
          (
           [category_id] => 86
           [category_name] => 淋浴花洒
           [parent_id] => 85
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
        )
      )
     [1] => Array
      (
       [category_id] => 126
       [category_name] => 墙纸
       [parent_id] => 84
       [listorder] => 200
       [display] => 1
       [childs] => Array
        (
         [0] => Array
          (
           [category_id] => 130
           [category_name] => 3D墙纸
           [parent_id] => 126
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [1] => Array
          (
           [category_id] => 129
           [category_name] => 纯纸墙纸
           [parent_id] => 126
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )
         [2] => Array
          (
           [category_id] => 128
           [category_name] => PVC墙纸
           [parent_id] => 126
           [listorder] => 200
           [display] => 1
           [childs] => Array
            (
            )
          )

Ensuite, le tableau de données De quel type de données s'agit-il :

Array
(
  [0] => Array
    (
      [category_id] => 211
      [category_name] => 鞋柜
      [parent_id] => 31
      [listorder] => 200
      [display] => 1
    )
  [1] => Array
    (
      [category_id] => 194
      [category_name] => 相框/照片墙
      [parent_id] => 189
      [listorder] => 200
      [display] => 1
    )
  [2] => Array
    (
      [category_id] => 193
      [category_name] => 帘艺隔断
      [parent_id] => 189
      [listorder] => 200
      [display] => 1
    )
  [3] => Array
    (
      [category_id] => 192
      [category_name] => 沙发垫套/椅垫
      [parent_id] => 189
      [listorder] => 200
      [display] => 1
    )
  [4] => Array
    (
      [category_id] => 191
      [category_name] => 地毯地垫
      [parent_id] => 189
      [listorder] => 200
      [display] => 1
    )
  [5] => Array
    (
      [category_id] => 190
      [category_name] => 桌布/罩件
      [parent_id] => 189
      [listorder] => 200
      [display] => 1
    )

Les données dans le tableau de données est violet ;

Ensuite, vous pouvez écrire le tableau de traitement. La méthode consiste à vous donner les données d'origine, puis à utiliser l'itération pour les traiter dans les données souhaitées. beaucoup, environ 6 lignes de code, ça va ?

Si vous copiez trop de code, les gens deviendront stupides, vous savez ? ? ?

//把栏目分组,以多维数组形式
public function group_category($id = 0)
{
    $list=$this->where(&#39;display = 1&#39;)->order(&#39;listorder asc&#39;)->select();
    $tmp = array();
    foreach($list as $v){
      if($v[&#39;parent_id&#39;] == $id){
        $v[&#39;childs&#39;] = $this->group_category($v[&#39;category_id&#39;]);
        $tmp[] = $v;
      }
    }
    return $tmp;
}

Pourquoi ne pas mettre l'instruction SQL à l'extérieur en tant que paramètre et la passer dans la fonction groud_category ? De cette façon, vous n’avez pas besoin de vérifier constamment la base de données.

Ce n'est rien de plus que de démarrer la requête avec l'ID parent comme 0, puis d'interroger l'identifiant de sa sous-colonne comme ID parent, et d'interroger la sous-colonne appartenant à son identifiant

C'est tout. L'intégralité du contenu de l'article est ici. Merci à tous d'avoir lu. Pour plus de contenu connexe, veuillez faire attention au site Web PHP chinois !

Recommandations associées :

ThinkPHP et Ajax implémentent un menu déroulant de liaison secondaire

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn