掌握Thinkphp3.2.0----标签库
1.什么是内置标签?什么是标签扩展库?
Cx.class.php 和 Html.class.php
2.怎么加载非内置标签,怎么使用?
两种方式加载
3.怎么扩展自定义的标签?
仿照Html.class.php写
仔细回答这3个问题:
问题一:
Think/Library/Think/Template/TagLib的Cx.class.php就是默认的内置标签,其中包含了前边所学习的标签。
在模版中可以直接以普通标签的形式进行调用。例如:<volist name="" id=""></volist>
Think/Library/Think/Template/TagLib的Html.class.php是扩展的非内置标签。
问题二:
配置文件:
'TAGLIB_BUILD_IN' =>'cx,html',修改默认的内置标签。这样的html就内置标签了,可以和volist一样直接调用了
引入:
<taglib name="html" />在模版中直接调用。但是调用得以固定: <html:imageBtn type="" value="" />这种
方式需要每一个模版文件都要引入。
'TAGLIB_PRE_LOAD'=>'html',配置文件中写入。这样就不用每次加载了
问题三:
有时感觉内置的标签不能满足项目日益繁杂的项目需求, 这是可能想自己扩展一些标签,来使用,那么自己怎么扩展标签呢?
第一步:在 Think/Library/Think/Template/TagLib 下创建一个 Test.class.php
1 //自定义扩展标签 2 e namespace Think\Template\TagLib; 3 e use Think\Template\TagLib; 4 defined('THINK_PATH') or exit(); 5 /** 6 * Test测试标签 7 */ 8 s class Test s extends TagLib{ 9 // 标签定义 10 d protected $tags = array( 11 'mytest'=> array('attr'=>'color,border','close'=>1) 12 ); 13 public n function _mytest($tag,$content) { 14 $color = ''; 15 $border = ''; 16 f if ( isset($tag['color'])) { 17 $color = 'color:'.$tag['color']; 18 } 19 f if ( isset($tag['border'])) { 20 $border = 'border:'.$tag['border'].'px solid #ccc'; 21 } 22 $css = $color.';'.$border; 23 n return '<div style="'.$css.'">'.$content.'</div>'; 24 } 25 }
导入 test 扩展标签
1 <taglib name="test" />
使用扩展标签
1 <Test:mytest color="blue" border="5">测试标签</Test:mytest>
这样就可以自定义自己所用的标签了。基本都是按照固定的规则进行