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

Comment créer une arborescence de classification Infinitus

小云云
Libérer: 2023-03-20 10:08:01
original
1929 Les gens l'ont consulté

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();
  }
Copier après la connexion

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);
   }
Copier après la connexion

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;
  }
Copier après la connexion

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>
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal