自定义标签小实例
学习自定义标签时,请查看手册(扩展->标签库)中的相关介绍
http://document.thinkphp.cn/manual_3_2.html#taglib_driver
主要分三步:
一、自定义标签(新建Test.class.php文件)namespace Think\Template\TagLib; // 当前文件所在的目录<br>
use Think\Template\TagLib; // Template目录下的TagLib.class.php文件<br>
<br>
class Test extends TagLib {<br>
protected $tags = array(<br>
// 定义标签<br>
'edit' => array('attr'=>'type,name,id,value','close'=>0), // 调用这个标签,就是映射到真正的input标签(因为返回的就是input标签),这里不过是换了一个名称而已<br>
'content' => array('attr'=>'name,id'), // 原理同上<br>
);<br>
<br>
// edit标签解析(每个标签的解析方法在定义的时候需要添加“_”前缀)<br>
public function _edit($tag) {<br>
$name = $tag['name'];<br>
$id = $tag['id'];<br>
$type = $tag['type'];<br>
$value = $tag['value'];<br>
$str = "<input>";<br>
return $str;<br>
}<br>
// content标签解析<br>
public function _content($tag,$content) {<br>
$name = $tag['name'];<br>
$id = $tag['id'];<br>
$str = '<textarea>'.$content.'</textarea>';<br>
return $str;<br>
}<br>
}
二、赋值变量,输出模板 public function index(){<br>
$this->assign('value', 'hello world !');<br>
$this->display('tag');<br>
}
三、在模板中输出nbsp;html><br>
<br>
<br>
<meta>
<br>
<title></title>
<br>
<br>
<br>
<taglib></taglib><!-- 指定标签库 --><br>
<edit></edit><br>
<hr>
<br>
<content>{$value}</content><br>
<br>
自动调用:
要在config文件里加上如下配置: 'TAGLIB_LOAD'=>true, <br>
'APP_AUTOLOAD_PATH'=>'@.TagLib',<br>
'TAGLIB_BUILD_IN'=>'Cx,Test',
然后模板输出就要这样写了(不需要写test:前缀和 <edit></edit><br>
<hr>
<br>
<content>{$value}</content>
效果:
简单理解,所谓自定义标签就是看返回的是什么,如果返回的是html标签,那就以html标签展现出来;如果返回的是纯数据,那就又文本的形式展现出来(以组装从sql取出来的数据为多) protected $tags = array(<br>
'data' => array('attr'=>'type','close'=>0), // input标签<br>
);<br>
<br>
public function _data($tag) {<br>
switch ($tag['type']) {<br>
case 1:<br>
return '<div>返回的是类型1</div>';<br>
break;<br>
case 2:<br>
return '<div>返回的是类型1</div>';<br>
break;<br>
default:<br>
return '<div>默认类型</div>';<br>
break;<br>
}<br>
}
模板渲染: <data></data><br>
<data></data><br>
<data></data>
效果:
谢谢关注~
AD:真正免费,域名+虚机+企业邮箱=0元