Qu'est-ce que l'héritage de modèles dans Thinkphp ? Exemples d'héritage de modèles

不言
Libérer: 2023-04-03 11:58:02
original
1856 Les gens l'ont consulté

L'héritage de modèle dans thinkPHP est comme l'héritage de classe. Un modèle peut définir un modèle de base (ou une mise en page), y définir les blocs pertinents, puis étendre les sous-modèles du modèle de base. modèle de base.

Par conséquent, l'avantage de l'héritage de modèle est en fait de concevoir des blocs dans le modèle de base et de remplacer ces blocs dans des sous-modèles.

Chaque bloc est constitué de balises <block></block>. Ce qui suit est une conception de bloc typique dans le modèle de base (utilisé pour la conception des titres de sites Web) :

<block name="title"><title>网站标题</title></block>
Copier après la connexion

La balise de bloc doit spécifier l'attribut name pour identifier le nom du bloc actuel. Cette identification doit être dans. le modèle actuel est unique. La balise de bloc peut contenir n'importe quel contenu de modèle, y compris d'autres balises et variables, telles que :

<block name="title"><title>{$web_title}</title></block>
Copier après la connexion

Vous pouvez même charger des fichiers externes dans le bloc :

<block name="include"><include file="Public:header" /></block>
Copier après la connexion

Un modèle peut définir n'importe quel nombre de blocs avec des noms non répétitifs. Par exemple, un base.html modèle de base est défini ci-dessous :

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<block name="title"><title>标题</title></block>
</head>
<body>
<block name="menu">菜单</block>
<block name="left">左边分栏</block>
<block name="main">主内容</block>
<block name="right">右边分栏</block>
<block name="footer">底部</block>
</body>
</html>
Copier après la connexion

Ensuite, nous créons un sous-modèle (en fait le modèle d'entrée). pour l'opération en cours) Utilisation de l'héritage :

<extend name="base" />
<block name="title"><title>{$title}</title></block>
<block name="menu">
<a href="/" >首页</a>
<a href="/info/" >资讯</a>
<a href="/bbs/" >论坛</a>
</block>
<block name="left"></block>
<block name="content">
<volist name="list" id="vo">
<a href="/new/{$vo.id}">{$vo.title}</a><br/>
 {$vo.content}
</volist>
</block>
<block name="right">
 最新资讯:
<volist name="news" id="new">
<a href="/new/{$new.id}">{$new.title}</a><br/>
</volist>
</block>
<block name="footer">
 @ThinkPHP2012 版权所有
</block>
Copier après la connexion

Comme vous pouvez le voir, la balise extend est utilisée dans le sous-modèle pour définir le modèle qui doit être hérité. L'utilisation de la balise extend est la. identique à la balise include Vous pouvez également charger d'autres modèles :

<extend name="Public:base" />
Copier après la connexion

Ou utiliser le chemin de fichier absolu pour charger

<extend name="./Template/Public/base.html" />
Copier après la connexion

Dans le sous-modèle actuel, vous ne pouvez définir que des blocs. et pas d'autres contenus du modèle, sinon il sera directement ignoré et seules les bases pourront être définies. Les blocs qui ont été définis dans le modèle.

Par exemple, si la définition suivante est utilisée :

<block name="title"><title>{$title}</title></block>
<a href="/" >首页</a>
<a href="/info/" >资讯</a>
<a href="/bbs/" >论坛</a>
Copier après la connexion

La section de navigation sera invalide et ne sera pas affichée dans le modèle.

Dans le sous-modèle, vous pouvez surcharger la définition du bloc dans le modèle de base. S'il n'est pas redéfini, cela signifie que la définition du bloc dans le modèle de base sera utilisée. défini, cela signifie supprimer le contenu du bloc dans le modèle de base. Dans l'exemple ci-dessus, nous avons supprimé le contenu du bloc de gauche et rechargé les autres blocs.

L'ordre des définitions de blocs dans les sous-modèles est arbitraire. La clé de l'utilisation de l'héritage de modèle réside dans la planification de la mise en page et de la conception du modèle de base, s'il est combiné avec la fonction de mise en page d'origine, il sera plus flexible.

Recommandations associées :

Tutoriel vidéo approfondi du framework ThinkPHP de la Geek Academy

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