Thinkphp5.1 自定义标签(Taglib)

在TP框架中,我们一般是在控制器定义变量,并将变量渲染到视图里输出。然而,本次要介绍的是用自定义标签输出变量。在进行cms开发中,前台页面的数据输出一般是靠自定义的标签,进行输出。
TP框架的视图工作流程:把控制器中定义的变量或者自定义标签的变量,渲染到页面模板;接着,TP框架会编译视图页面,把生成php文件放在项目下runtime\temp目录里(TP框架的运行文件);最后当用户访问时,调用运行文件里的php文件,显示到用户界面里。

自定义标签

1 、自定义的标签,一般是放在公共模块里,即在common模块下新建目录taglib(用存放自定义标签库);
2、在taglib目录下创建Demo.php继承app\common\taglib的TagLib类,代码如下:

 ['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}

你可能感兴趣的:(Thinkphp5.1 自定义标签(Taglib))