掌握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>

 

 这样就可以自定义自己所用的标签了。基本都是按照固定的规则进行

 

posted @ 2016-12-26 20:14  xz小郑  阅读(187)  评论(0编辑  收藏  举报