ThinkPHP5 tablib标签库自定义

本文实例讲述了thinkPHP5 tablib标签库自定义方法。分享给大家供大家参考,具体如下:

官方文档的标签库使用教程没有写得太细,自己摸索出来了一些。
1 、在common(我是在common,你自己看,反正是用命名空间载入)里新建目录taglib
2、在taglib里新建Tag.php 继承think的Tglib,代码如下:

<?php
namespace app\common\taglib;
use think\template\TagLib;

class Tag extends TagLib {
    /**
     * 定义标签列表
     */
    protected $tags = [
        // 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
        'links'   => ['attr' => '', 'close' => 1],//友情链接 item,key 可传可不传 也可另加参数
    ];

    /**
     * 获取友情链接列表
     * @param $tag
     * @param $content
     * @return string
     */
    public function tagLinks($tag, $content) {
        $item  = !empty($tag['item']) ? $tag['item'] : 'item';
        $key   = !empty($tag['key']) ? $tag['key'] : 'key';
        $parse = <<<EOF
        <?php
               \$__LIST__ =  app\cms\model\Link::getList();   //model你就随意发挥了
                foreach(\$__LIST__ as \$$key =>\$$item):
                ?>
EOF;
        $parse .= $content;
        $parse .= '<?php endforeach; ?>';
        return $parse;
    }
}

3、不要忘记配置文件中设置 标签库预加载 'taglib_pre_load' => 'app\common\taglib\tag'

使用实例: 
{tag:links }
<li><a href="#">{$item.title}</a></li>
{/tag:links}

另外还有简化写法:
配置文件中:'taglib_build_in' => 'cx,tag'标签库定义为内置标签库(前提是多个标签库没有标签冲突的情况下)
使用方法:

{links }
<li><a href="#">{$item.title}</a></li>
{/links}

4、TP5.1中手册未完善,此部分看查看5.0 手册或者3.2手册
另外建议多研究下 内置标签库Cx标签库。

非特殊说明,本博所有文章均为博主原创。

备注:相关侵权、举报、投诉及建议等,请联系站长

添加新评论

昵称
邮箱
网站