Thinkphp5.1 自定义标签(Taglib)
2019-05-16 本文已影响0人
呆鼠博客
在TP框架中,我们一般是在控制器定义变量,并将变量渲染到视图里输出。然而,本次要介绍的是用自定义标签输出变量。在进行cms开发中,前台页面的数据输出一般是靠自定义的标签,进行输出。
TP框架的视图工作流程:把控制器中定义的变量或者自定义标签的变量,渲染到页面模板;接着,TP框架会编译视图页面,把生成php文件放在项目下runtime\temp目录里(TP框架的运行文件);最后当用户访问时,调用运行文件里的php文件,显示到用户界面里。
自定义标签
1 、自定义的标签,一般是放在公共模块里,即在common模块下新建目录taglib(用存放自定义标签库);
2、在taglib目录下创建Demo.php继承app\common\taglib的TagLib类,代码如下:
<?php
namespace app\common\taglib;
use think\template\TagLib;
class Demo extends TagLib{
/**
* 定义标签列表
*/
protected $tags = [
/**标签定义
* attr:属性列表
* close:是否闭合(0表示闭合,1表示不闭合。默认值为1)
* alias:标签别名
* level:嵌套层次
*/
'sitename' => ['attr' => 'name', 'close' => 0],//闭合标签
'keyword' => ['attr' => 'key', 'close' => 1], //不闭合标签
];
/**
* 闭合标签
* $tag:存放标签属性的数组
*/
public function sitename($tag)
{
return '网站名称:'.$tag['name'];
}
/**
* 不闭合标签
* $tag:存放标签属性的数组
* $content:标签内的数据
*/
public function keyword($tag,$content)
{
return '网站关键词:'.$tag['key'].$content;
}
}
如何使用自定义标签
首先,在使用标签前需要配置标签,不然无法使用,在TP 5.1项目中配置自定义的标签。
- 方法一、打开项目下config\template.php配置文件,在配置文件中添加如下配置:
'taglib_build_in' => 'cx,app\common\taglib\Demo',
注意:cx是框架默认的标签库,配置的标签库必须添加命名空间。这种方法配置的标签库,在使用的时候不用添加标签的命名空间(即标签库名)。
例如,news标签
{news num='10'}{$titile}{/news}
- 方法二、打开项目下config\template.php配置文件,在配置文件中添加如下配置:
'taglib_pre_load' => 'app\common\taglib\Demo',
注意:这种方法配置的标签库,在使用的时候需要添加标签的命名空间(即标签库名)。
其次,可以在模板文件里使用上面定义的标签,如下:
方法一的使用:
{sitename name='新浪微博'/}
{keyword key='新浪,微博'}
我在关键词后面。
{/keyword}
方法二的使用:
{Demo:sitename name='新浪微博'/}
{Demo:keyword key='新浪,微博'}
我在关键词后面。
{/Demo:keyword}