美文网首页
Thinkphp5.1 自定义标签(Taglib)

Thinkphp5.1 自定义标签(Taglib)

作者: 呆鼠博客 | 来源:发表于2019-05-16 16:00 被阅读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}
    

    相关文章

      网友评论

          本文标题:Thinkphp5.1 自定义标签(Taglib)

          本文链接:https://www.haomeiwen.com/subject/fjsiaqtx.html