700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > php taglib.php thinkphp5 taglib_pre_load预加载自定义标签库

php taglib.php thinkphp5 taglib_pre_load预加载自定义标签库

时间:2019-11-25 17:50:52

相关推荐

php taglib.php thinkphp5 taglib_pre_load预加载自定义标签库

文章内容来自官方手册,需要查看详细的可以访问来源网址。

模板中加载标签库,预加载自定义标签库,扩展内置标签库的加载

下面以标签库放在common作为一个示例:

namespace app\common\taglib;

use think\template\TagLib;

class Demo extends TagLib{

/**

* 定义标签列表

*/

protected $tags = [

// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次

'close' => ['attr' => 'time,format', 'close' => 0], //闭合标签,默认为不闭合

'open' => ['attr' => 'name,type', 'close' => 1],

];

/**

* 这是一个闭合标签的简单演示

*/

public function tagClose($tag)

{

$format = empty($tag['format']) ? 'Y-m-d H:i:s' : $tag['format'];

$time = empty($tag['time']) ? time() : $tag['time'];

$parse = '<?php ';

$parse .= 'echo date("' . $format . '",' . $time . ');';

$parse .= ' ?>';

return $parse;

}

/**

* 这是一个非闭合标签的简单演示

*/

public function tagOpen($tag, $content)

{

$type = empty($tag['type']) ? 0 : 1; // 这个type目的是为了区分类型,一般来源是数据库

$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}';

return $parse;

}

}

这时候我们的控制器继承Controller,在配置参数中配置:

'template' => [

// 模板引擎类型 支持 php think 支持扩展

'type' => 'Think',

// 模板路径

'view_path' => '',

// 模板后缀

'view_suffix' => '.html',

// 预先加载的标签库

'taglib_pre_load' => 'app\common\taglib\Demo',

],

我们就可以在控制器中对模版赋值:

//给模版给以一个当前时间戳的值

$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}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。