Maison  >  Article  >  développement back-end  >  Utilisation de la boucle imbriquée de la balise volist de Thinkphp

Utilisation de la boucle imbriquée de la balise volist de Thinkphp

不言
不言original
2018-06-06 16:23:561993parcourir

Cet article présente principalement la méthode de ThinkPHP pour implémenter la boucle d'imbrication de balises volist. Les amis qui en ont besoin peuvent s'y référer

Cet article explique plus en détail l'utilisation de l'imbrication de balises volist de ThinkPHP comme suit :

Tout d'abord, dans le manuel de développement Thinkphp, il y a une explication sur l'imbrication des balises 3da5ee660f26a047cce0b9503e43e613 Comme suit :

Imbrication de balises :

Le moteur de modèles prend en charge la fonction d'imbrication à plusieurs niveaux des balises et vous pouvez spécifier si les balises de la bibliothèque de balises peuvent être imbriquées.
Parmi les balises intégrées au système, volist (et son alias iterate), switch, if, elseif, else, foreach, compare (y compris toutes les balises de comparaison), (pas) présent, (pas) vide, ( non) les balises définies peuvent être imbriquées. Par exemple :

<volist name="list" id="vo">
<volist name="vo[&#39;sub&#39;]" id="sub">
{$sub.name}
</volist>
</volist>

Les balises ci-dessus peuvent être utilisées pour générer des doubles boucles.

Le niveau d'imbrication par défaut est de 3 niveaux, donc le niveau d'imbrication ne peut pas dépasser 3 niveaux. Si vous avez besoin de plus de niveaux, vous pouvez spécifier le paramètre de configuration TAG_NESTED_LEVEL.
Mais comment exactement attribuer une valeur à « list » dans Action ? Comme le montre la description, la liste doit être un tableau à deux dimensions. Vous trouverez ci-dessous un code de test qui peut être utilisé après le test.

$Baojia=new Model(&#39;baojia&#39;);
$Class=new Model(&#39;class&#39;);
$parent=$Class->select();   
foreach($parent as $n=> $val){
$parent[$n][&#39;voo&#39;]=$Baojia->where(&#39;belongto=\&#39;&#39;.$val[&#39;name&#39;].&#39;\&#39;&#39;)->select();
}
$this->assign(&#39;list&#39;,$parent);
<volist name="list" id="vo">
    {$vo.name}<BR>
<volist name="vo[&#39;voo&#39;]" id="sub">
 {$sub.name}
</volist><BR>
</volist>

Deux tableaux sont définis dans la base de données, l'un est un tableau de cotation et l'autre est un tableau de classement. La fonction est d'afficher le classement comme un menu arborescent. Sous chaque classement se trouve la citation de chacun. modèle.

Les principales fonctions du code sont :

1. Créez d'abord le modèle :

$Baojia=new Model(&#39;baojia&#39;);
$Class=new Model(&#39;class&#39;);

2. Interrogez ensuite les données dans la classification. important car nous le savons, la requête de base de données renvoie les données sous une forme bidimensionnelle similaire à un tableau. Lorsque nous retirons une seule donnée, cela équivaut à lire chaque ligne de données. Lors de l'appel de 3da5ee660f26a047cce0b9503e43e613, l'arrière-plan thinkphp lira automatiquement chaque ligne de données.

$parent=$Class->select();

Enregistrez les données de la citation dans $parent, où $n est le numéro de série du tableau $parent, qui est équivalent à la table de données stockée dans $parent. Chaque ligne ajoute un index. Cet index pointe vers des citations appartenant à cette catégorie.

foreach($parent as $n=> $val){
$parent[$n][&#39;voo&#39;]=$Baojia->where(&#39;belongto=\&#39;&#39;.$val[&#39;name&#39;].&#39;\&#39;&#39;)->select();   
}

3. Enfin :

$this->assign(&#39;list&#39;,$parent);

Affichez la sortie !

Grâce à ce programme, vous pouvez avoir une compréhension plus approfondie de la balise 3da5ee660f26a047cce0b9503e43e613. En fait, lors des opérations de base de données, le nom de la balise 3da5ee660f26a047cce0b9503e43e613 bien sûr, il peut aussi s'agir d'un type de tableau, car les données obtenues par la requête de base de données elle-même sont de type tableau), lorsque nous appelons la balise 3da5ee660f26a047cce0b9503e43e613 sur la page d'affichage, surtout lorsqu'elle est imbriquée, rappelez-vous toujours que le nom de chacun la couche doit être de type tableau, comme ceci Dans le programme, la couche la plus externe, 2c7953a8f6f793cfefe6eaa0b0257de7 la liste ici est le $parent que nous avons initialement défini. Cette variable pointe vers la table de données. obtenu en interrogeant la table de classe. La couche interne ec18395323f098c05bac9744d0206609, qui est la table de données pointée par $parent[$n]['voo'] , qui correspondent aux données correspondantes dans le tableau de cotation.

Grâce à cette analyse, la logique est très claire. Des boucles N-fold peuvent être obtenues en tirant des inférences à partir d'un exemple. Bien sûr, si vous avez besoin de plus de niveaux, vous pouvez spécifier le paramètre de configuration TAG_NESTED_LEVEL.

De cette manière, plusieurs cycles tels que pays->province->ville->comté->canton peuvent être réalisés

Recommandations associées :

Comment utiliser les balises de modèle HTML de thinkPHP

Exemple de la fonction de liaison à trois niveaux des provinces et des municipalités mise en œuvre par thinkPHP

Sortie de jugement du modèle ThinkPHP Utilisation des balises vides

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