zoukankan      html  css  js  c++  java
  • 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 HomeTagLib;
    use ThinkTemplateTagLib;
    
    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 AdminCommonCategory;    //载入递归无限级分类
      $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,HomeTagLibCate', //Cx代表核心标签库
        'TAGLIB_PRE_LOAD' => 'HomeTagLibCate',
    );

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

    最后在需要引入标签库的视图文件 ./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加载外部标签库出现“实例化一个不存在的类”错误

  • 相关阅读:
    web--webstorm的一些常用快捷键
    studio--常见设置
    并发之lock的condition接口
    并发之atomic实例
    并发之volatile底层原理
    并发之java.util.concurrent.atomic原子操作类包
    多线程之整体概括
    Sqlite之事务
    activity--生命周期总结
    网络之TCP握手总结
  • 原文地址:https://www.cnblogs.com/dee0912/p/5196950.html
Copyright © 2011-2022 走看看