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加载外部标签库出现“实例化一个不存在的类”错误
ThinkPHP3.2.3 自定义标签库的使用的更多相关文章
- thinkphp自定义标签库
thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...
- JSP自定义标签库
总所周知,JSP自定义标签库,主要是为了去掉JSP页面中的JAVA语句 此处以格式化输出时间戳为指定日期格式为例,简单介绍下JSP自定义标签的过程. 编写标签处理类(可继承自javax.servlet ...
- ThinkPHP - 自定义标签库 - 标签驱动
ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html 创建一个类,继承自TagLib类: <?php / ...
- jsp 自定义标签库
自定义标签的作用 *** 自定义标签的主要用于移除jsp页面中java代码 *** JSP页面中使用自定义的标签 使用jsp指令<% @taglib uri="标签库的uri" ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- JavaWeb学习之JSTL自定义标签库的使用、JSTL自定义函数库(7)
一.自定义标签,步骤 * 确定需求 * <my:date /> 输出当前系统的时间 yyyy-MM-dd hh:mm:ss:SSS * 编写Java类 新建包名:com.yxl.tag,新 ...
- JavaWeb学习记录(十九)——jstl自定义标签库之传统标签
一.传统标签 (1)JSP引擎将遇到自定义标签时,首先创建标签处理器类的实例对象,然后按照JSP规范定义的通信规则依次调用它的方法. public void setPageContext(PageCo ...
- 学习笔记_Java_day13_JSTL_自定义标签库(9)
自定义标签 1 自定义标签概述 1.1 自定义标签的步骤 其实我们在JSP页面中使用标签就等于调用某个对象的某个方法一样,例如:<c:if test=””>,这就是在调用对象的方法一样.自 ...
- JavaWeb 自定义标签库开发传统标签
自定义标签主要用于移除Jsp页面中的java代码. 移除jsp页面中的java代码,只需要完成两个步骤: 编写一个实现Tag接口的Java类,并覆盖doStartTag方法,把jsp页面中的java代 ...
随机推荐
- [xsd学习]xsd元素限定
限定(restriction)用于为 XML 元素或者属性定义可接受的值 一.xsd中主要限定格式如下: <xs:element name="xxx"><!--元 ...
- 【CLR in c#】事件
1.事件模型建立在委托的基础上. 2,定义事件编译器会做三个动作,第一个构造具有委托类型的字段,事件发生时会通知这个列表中的委托. 第二个构造的是一个添加关注的方法+=. 第三个构造是一个注销事件关 ...
- BZOJ3723 : PA2014Final Gra w podwajanie
暴力搜索出所有可行的形状,可以发现本质不同的形状数只有6000个左右. 对于每个形状,它的大小不超过$8\times 8$,故可以按照右下角为原点重建坐标系,用一个unsigned long long ...
- hadoop 流streaming跑python程序
先放上命令: hadoop jar /usr/hadoop-/contrib/streaming/hadoop-streaming-.jar -mapper mapper.py -file mappe ...
- Leetcode Combination Sum
Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C wher ...
- Fedora 23 配置
Linux下安装Fedora 刻到u盘上 下好iso后准备刻录到u盘...可是查了一下只能在用一个叫dd的东西刻= =于是学了下...然而就是一句话: dd if=/path/xxx.iso of=/ ...
- 查看那个进程占用了端口号(LINUX与AIX)
在LINUX中: netstat命令 [root@limt ~]# netstat -tulp Active Internet connections (only servers) Proto Rec ...
- centos 7 搭建本地yum仓库
首先需要创建一个目录 mkdir /1 #在根目录下创建一个名字为1的目录 将光盘挂载到创建的这个目录 mount /dev/cdrom /1 yum命令配置文件在/etc/yum.repos.d ...
- 坐标系统与投影变换及在ArcGIS桌面产品中的应用
坐标系统与投影变换及在ArcGIS桌面产品中的应用 1.地球椭球体(Ellipsoid) 2.大地基准面(Geodetic datum) 3.投影坐标系统(Projected Coordinate S ...
- winform中键盘和鼠标事件的捕捉和重写(转)
在 编写winform应用程序时,有时需要无论在哪个控件获取焦点时,对某一个键盘输入或者鼠标事件都进行同样的操作.比如编写一个处理图片的应用程序时, 希望无论当前哪个控件获得焦点,当用户按上.下.左. ...