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>
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>
Vous pouvez même charger des fichiers externes dans le bloc :
<block name="include"><include file="Public:header" /></block>
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>
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>
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" />
Ou utiliser le chemin de fichier absolu pour charger
<extend name="./Template/Public/base.html" />
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>
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!