文章的内容来自官方手册,需要看细节。 可以访问源网站。
将标记库加载到模板中,预加载自定义标记库,然后扩展内置标记库的加载
例如,将标记库放置在common中。
namespace appcommontaglib;
use thinktemplateTagLib;
class Demo extends TagLib{
//*
*标签列表定义
*/
保护$ tags=[
//标签定义: attr属性列表close是否关闭(0或1默认值1 ) alias标签别名level嵌套层次结构
' close'=['attr'='time,format ',' close'=0],//关闭标签,默认情况下不关闭
' open'=['attr'='name,type ',' close'=1],
];
//*
*这是一个封闭标签的简单演示
*/
公共功能标签类别($ tag ) )。
{
$format=empty($tag['format'] )? ' y-m-DH : I : s ' : $ tag [ ' format ' ];
$time=empty($tag['time'] ' )? time(:$tag('time );
$parse=? php ';
$parse .='echo date('' . $format.','.$time.' ); ';
$parse .='?
返回$ parse;
}
//*
*这是一个未闭合标签的简单演示
*/
publicfunctiontagopen($tag,$content ) )。
{
$type=empty($tag['type'] ' )? 0 : 1; //此类型的目的是区分类型,常见的源是数据库
$name=$tag['name']; //name是必须项目,所以在此不进行判断
$parse=? php ';
$ parse.=' $ test _ arr=[ 1,3,5,7,9 ],[ 2,4,6,8,10 ];' ; //这里是模拟数据
$ parse.=' $ _ list _ _=$ test _ arr [ '.$ type.';' ;
$parse .='?
$ parse.=' { volist name=' _ _ list _ ' id='.$ name.' } ';
$parse .=$content;
$parse .='{/volist} ';
返回$ parse;
}
}
此时,我们的控制器继承Controller,并由配置参数组成。
' template'=[
//模板引擎类型支持php think支持扩展
' type'='Think ',
//模板路径
' view_path'=',
//模板后缀
' view_suffix'='.html ',
//预载标记库
' taglib _ pre _ load '=' appcommontaglibdemo ',
]、
可以在控制器上为模板分配值。
//向模板提供当前时间戳的值
$this-assign(demo_time )、$this-request-time ) );
调用已加载到模板中的标记:
关闭标签{ demo : close time=' $ demo _ time '/}
非封闭标签{ demo : open name=' demo _ name ' }
{$key}={$demo_name}
{/demo:open}
{ demo : open name=' demo _ name ' type='1' }
{$key}={$demo_name}
{/demo:open}