Maison  >  Article  >  développement back-end  >  Comment créer une arborescence de classification Infinitus

Comment créer une arborescence de classification Infinitus

小云云
小云云original
2018-02-12 13:17:051901parcourir

Cet article vous apporte principalement une méthode simple pour créer une arborescence de classification Infinitus. L'éditeur pense que c'est plutôt bien, alors je vais le partager avec vous maintenant et le donner comme référence. Suivons l'éditeur pour y jeter un œil, j'espère que cela pourra aider tout le monde.

D'abord les rendus

La classification de premier niveau est en fait la classification de premier niveau, et la classification de deuxième niveau est également appelée la sous-catégorie de la classification de premier niveau. Sur cette base, les sous-catégories peuvent également avoir des sous-catégories, formant ainsi une catégorie infinie.

Regardons le code d'implémentation spécifique :

1. Requête par champ dans le contrôleur pour connaître toutes les informations de classification (id : la valeur ID de la catégorie, cate_name : le nom de la catégorie. catégorie , pid : identifiant parent, tris : préparation à l'affichage de l'ordre des titres, on ne peut pas l'écrire)

public function cate_display()
  {
    $cate = D('Cate'); 
    $field = array('id','cate_name','pid','sorts');
    $list = $cate->allCategory($field);
    $this->assign('list',$list);
    $this->display();
  }

2. Coder dans le modèle

Créer deux dans le modèle du contrôleur correspondant. Méthodes

1. Interrogez toutes les informations de classification et appelez la méthode pour générer un arbre de classification :

public function allCategory($field='*'){
     $data = $this->field($field)->select();
     return $this->tree($data);
   }

2. pid[identifiant de classe parent], niveau [nombre de couches, utilisé pour contrôler le nombre d'affichages] deux variables, la valeur initiale est zéro)

public function tree($data,$pid=0,$level=0){
    static $tree = array();
    foreach($data as $k=>$v){
      if($v['pid'] == $pid){
        $v['level'] = $level;
        $tree[]=$v;
        $this->tree($data,$v['id'],$level+1);
      }
    }
  
    return $tree;
  }

3. Le code dans le fichier de vue

<p class="form-group">
        <label for="pid" class="col-sm-2 control-label no-padding-right">上级菜单</label>
        <p class="col-sm-6">
          <select name="pid" style="width: 100%;">
            <option selected="selected" value="0">顶级菜单</option>
            <volist name="row" id="val"> 
              <option value="{$val.id}"><?php echo str_repeat(&#39;-&#39;,$val[&#39;level&#39;]*4); ?>{$val.cate_name}
              </option> 
            </volist> 
          </select>
        </p>
      </p>

comme ceci, une structure arborescente de classification qui peut être infiniment récursive est complétée. Résumé : L'idée principale est toujours la fonction récursive dans le modèle. Le pid est transmis en premier et la valeur par défaut est zéro. chaque récursion est l'identifiant supérieur et le niveau est utilisé pour enregistrer le nombre de niveaux de récursion. Enfin, lorsque la page d'affichage est affichée, la fonction intégrée PHP str_repeat() est appelée pour afficher à plusieurs reprises « - » pour obtenir l'effet de. distinguer les niveaux pendant la sortie.

Recommandations associées :

php implémente l'arbre de classification Infinitus sans récursion

La classification PHP Infinitus génère l'implémentation de l'arbre de classification Introduction au méthode

Une brève introduction à la structure arborescente de classification Infinitus

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