ThinkPHP3.2+版本如何自定义自己的标签

在前台调用模板的时候,一般会将公用的部分(头部、左侧|右侧、底部)摘出来,单独作为一个文件来引入。这样会使代码更容易维护,但是由于每个文件都载入公共模板,就会需要在多个控制器里面分配同样的数据或者在公共模板里面写PHP代码来读取数据,虽然可以达到同样的功能,但是前者重复使用了代码,后者没有使HTML和PHP代码分离,与面向对象程序设计思想以及使用框架的初衷背道而驰。所以我们可以使用一种更优雅的方式来解决,那就是扩展标签库自定义自己的标签。

例如:网站导航栏是每个页面都需要加载的~ 我们可以在里面定义一个

标签来读取导航栏并且排序好~~这样既简化了代码又方便前端调用而且看着也舒服~如何自定义自己的标签,步骤如下:

1,首先在当前模块的Controller文件夹同级目录新建一个文件夹,名称是TagLib。

2,在TagLib里面新建一个PHP文件,如:TagLibMytags.class.php。需要注意的是:文件名前缀TagLib是必须的,Mytags是你的Tag名称。

3,TagLibMytags.class.php的内容如下:

 array(
            'attr'  => 'id, name',//attr 标签支持的属性列表,用逗号分隔
            'close' => 0//close 标签是否为闭合方式(0闭合 1不闭合),默认不闭合
        )
    );

    public function _test ($tag, $content) {
        $id = $tag['id'];
        $name = $tag['name'];
        $str = '';
        $str .= '';

        return $str;

    }
}

因为TP3.2之后的版本引入了命名空间,所以顶部必须带有命名空间

至于标签功能如何定义请参照TP手册。

4,在模板页面调用

输出:我是标签名称

5,最后就是处理配置项了,在配置文件中配置 

 '@.TagLib',
    'TAGLIB_BUILD_IN' => 'Cx,Home\TagLib\TagLibMytags'
);
其中@表示当前所在的模块,Cx是TP核心标签库(例如:经常在模板上用到的foreach、if)如果不加上的话它的标签就无法使用了。还需要注意一点的就是写自己的标签库的时候需要带全路径,要不然会提示实例化一个不存在的类!

你可能感兴趣的:(ThinkPHP笔记,PHP开发)