ThinkPHP3.2.3 自定义标签库的使用

ThinkPHP 3.2.3 手册中标签库驱动的地址是: http://www.kancloud.cn/manual/thinkphp/1859

标签库的地址是:http://www.kancloud.cn/manual/thinkphp/1799

每一个标签库是一个独立的标签库文件,标签库中的每一个标签完成某个功能。

 

例如:可以通过创建自定义标签进行导航栏(nav)的数据调用。

在创建自定义标签之前可以先参考 ThinkPHP 自身的标签库驱动 ./ThinkPHP/Library/Think/Template/TagLib 下的 Cx.class.php 和 Html.class.php。

首先在 Home 应用下创建 TagLib 目录:./Application/Home/TagLib,在目录中新建 Cate.class.php:

<?php
/*
 * 自定义标签库
 */
namespace Home\TagLib;
use Think\Template\TagLib;

class Cate extends TagLib{

    //自定义标签的属性
    protected $tags = array(
        'nav'    =>    array(
            'attr'    =>    'limit,order',
            'close'    =>    1 //闭合标签
        )
    );

    public function _nav($attr,$content) {

        $str = <<<str
<?php
  \$cate = M('cate')->order("{$attr['order']}")->limit({$attr['limit']})->select();  
  use Admin\Common\Category;    //载入递归无限级分类
  \$cate = Category::level_layer(\$cate);//多维数组
  foreach(\$cate as \$cate_v):
    extract(\$cate_v);
?>
str;
        $str .= $content;
        $str .= '<?php endforeach;?>';
        return $str;   
    }
}

自定义标签库 Cate 类定了 nav 标签,包含的属性有 limit 和 order,同时定义该标签为闭合标签,也就是在视图中引用的格式是<nav></nav>,并把查询出数据以字符串的形式返回。

 

在配置文件 ./Application/Home/Conf/config.php 中添加:

<?php
return array(
    //'配置项'=>'配置值'
    //标签库
    'TAGLIB_BUILD_IN' => 'Cx,Home\TagLib\Cate', //Cx代表核心标签库
    'TAGLIB_PRE_LOAD' => 'Home\TagLib\Cate',
);

使得自定义标签库驱动能够自动加载。

 

最后在需要引入标签库的视图文件 ./Application/Home/View/Common/nav.html 中调用:

<!--自定义标签库-->
    <nav order='sort ASC'>
        <li>
            <a href="">{$name}</a>
            <ul>
                <foreach name="child" item="v">
                    <li><a href="">{$v.name}</a></li>
                </foreach>
            </ul>
        </li>
    </nav>
<!--自定义标签库-->   

 

参考:ThinkPHP v3.2.2加载外部标签库出现“实例化一个不存在的类”错误

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值