php标签扩展,标签扩展-ThinkPHP5.0完全开发手册

标签库加载

模板中加载标签库,预加载自定义标签库,扩展内置标签库的加载 请参考:模板/标签库

建议开发者将自定义标签库请放置应用目录中,请勿放在框架系统目录内,以免使用Composer更新框架时导致自定义标签库的丢失

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

namespace appcommonaglib;

use thinkemplateTagLib;

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" => "appcommonaglibDemo",

],

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

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

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

关于标签库开发

暂时可以参考3.2的官方手册中关于标签库扩展的部分,建议自己分析内置标签库Cx。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值