亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

PHP模板繼承 {extends}

標簽:
PHP

{extends}
模板继承中,你可以在子模板内使用{extends}标签来扩展父模板。
1.{extends}必须放在模板的第一行。
2.如果子模板要用{extends}来扩展父模板,那么它只能有 {block}的区域。

3.任何其他的模板内容都会被忽略。

扩展使用在$template_dir 之外的文件,请使用模板资源的语法。

Note
当你扩展一个父模板名称的变量如{extends file=$parent_file},

请确保$parent_file变量放到同一个 $cache_id中. 否则Smarty无法辨别不同的$parent_file变量。

parent.php页面


<?php //创建smarty对象require_once './libs/Smarty.class.php';//定义根目录define('ROOT'str_replace("\\""/",dirname(__FILE__))."/");//实例化Smarty类$smarty=new Smarty();//设定定界符$smarty->left_delimiter="<{";$smarty->right_delimiter="}>";//设置为false 定界符号左右可以有空格$smarty->auto_literal = false; //添加一个插件的目录//$smarty->setPluginsDir(ROOT."/libs/myplugins/"); //注意添加一个插件,要把系统默认设置的路径加入 否则不能使用默认系统的插件$smarty->setPluginsDir(array(    ROOT."/libs/plugins/",//系统默认设置的路径    ROOT."/libs/myplugins/",//自定义的)); //变量输出$smarty->display('parent.tpl'); ?>

child.php页面


<?php //创建smarty对象require_once './libs/Smarty.class.php';//定义根目录define('ROOT'str_replace("\\""/",dirname(__FILE__))."/");//实例化Smarty类$smarty=new Smarty();//设定定界符$smarty->left_delimiter="<{";$smarty->right_delimiter="}>";//设置为false 定界符号左右可以有空格$smarty->auto_literal = false; //变量输出$smarty->display('child.tpl'); ?>

parent.tpl页面


<!DOCTYPE html><html><head>    <meta http-equiv="content-type" content="text/html;charset=utf-8"/>    <title><{block name="one"}>This is a title<{/block}></title></head><body><{block name="two"}>This is a content....<{/block}><{block name="three"}>我是<{/block}><{block name="four"}>中国<{/block}><{block name="five"}>电影<{/block}><{block name="six"}>我要去<{$smarty.block.child}>上大学<{/block}></body></html>

child.tpl页面

浏览器输出(child.php页面输出)


我是第二个block我是津沙港湾我爱你,中国你喜欢看电影吗?我要去上海上大学

模板继承
继承是从面向对象编程而来的概念。

模板继承可以让你定义一个或多个父模板,提供给子模板来进行扩展。

扩展继承意味着子模板可以覆盖部分或全部父模板的块区域。

继承结构可以是多层次的,所以你可以继承于一个文件,而这个文件又是继承于其他文件,等等。

在覆盖父模板的{block}块以外的地方, 子模板不能定义任何内容。

任何在{block}以外的 内容都会被自动忽略。

在子模板和父模板中的{block}内容,可以通过 append 和 prepend来进行合并。

{block}的选项,和 {$smarty.block.parent} 或 {$smarty.block.child}会持有这些内容。

模板继承在编译时将编译成单独的一个编译文件。

对比效果相似的{include}包含模板功能,模板继承的性能更高。

子模板继承使用{extends}标签, 该标签一定放要在子模板的第一行。

另一种做法是将整个模板继承树,在PHP程序调用fetch() 或 display()的时候,

用extends:的模板资源类型,该做法有更大的灵活性。

Note
当开启了$compile_check,继承树里面的全部文件都会在每次调用的时候检查是否有修改。

因此,在生产环境中你最好关闭$compile_check。

Note
如果你的子模板里面有用到{include} 来包含模板,而被包含的模板里面存在供{include}模板 调用的{block}区域, 那么在最顶层的父模板里面,你需要放置一个空的 {block} 来作为继承。

點擊查看更多內容
TA 點贊

若覺得本文不錯,就分享一下吧!

評論

作者其他優質文章

正在加載中
  • 推薦
  • 2
  • 收藏
  • 共同學習,寫下你的評論
感謝您的支持,我會繼續努力的~
掃碼打賞,你說多少就多少
贊賞金額會直接到老師賬戶
支付方式
打開微信掃一掃,即可進行掃碼打賞哦
今天注冊有機會得

100積分直接送

付費專欄免費學

大額優惠券免費領

立即參與 放棄機會
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號

舉報

0/150
提交
取消