thinkphp 自定义标签
关于标签的个人理解是 拼凑php 字符串 通过eval()来进行,返回数据。过程应该是这样的,在模板中加入 定义标签为<mytag:list></mytag>,那么在mvc 中解析模板的时候,用正则来匹配 该标签,如果发现符合的标签 就去 寻找mytag 这个类,并实例 调用这个类下的 list方法 进行逻辑运算 返回数据。
在thinkphp 中扩展 自定义标签
下面以输出 面包屑 为例:
参照官方内置 标签类写法。在任何地方 建一个你的标签类,我这里是 放在Home\Mytag文件夹下 文件名 : 类名+class.php
这里以 Crumb.class.php 为例:
<?php
namespace Home\Mytag;//在thinkphp 中自定义标签类 一定要用命名空间 否则,thinkphp无法找到该类
use Think\Template\TagLib; class Crumb extends TagLib{
protected $tags = array(
"show" => array() ); public function _show()
{
$str = ' <?php ';
$str .= ' echo "哈哈哈哈哈哈"; ';
$str .= ' ?> ';
return $str;
}
}
上面已经把自定义标签最基本的类定义好了,现在只要在需要用到该标签 地址引入该标签,即可,在使用该标签<Crumb:show></Crumb:show> 之前一定要先引入该标签类再调用 自定义标签。引入代码如下:
<taglib name="Home\Mytag\Crumb"/>{/* 这是加载需要需要的自定义标签类 */}
<Crumb:show></Crumb:show>{/* 调用自定义标签 */}
如果这个标签需要接受参数传入,案例如下:
namespace Home\Mytag;
use Think\Template\TagLib; class Crumb extends TagLib{
protected $tags = array(
"show" => array('attr'=>'cateid') );
//如果需要通过属性 方式传值进来,一定要先在这里 定义好,否则不能正常运行。$content 这个不用定义,只要在标签对之间输入 就可以在这里类中获取到
public function _show($tag,$content)
{
$str = ' <?php ';
$cateid = $tag['cateid'] ;
//这里进行 自己逻辑运行,输出内容,到一个 变量中,然后return 即可
$str .=' echo "'.'<li><a href=\"#\">首页</a></li><li><a href=\"#\">新闻资讯</a></li><li class=\"active\">这是一篇新的资讯</li>'.'"; '; //$str .= ' echo "通过属性传进来的:'."$cateid".'传进来的 内容;'."$content".'";' ;
$str .= ' ?> ';
return $str;
}
}
传参数调用这个标签 如下:
<taglib name="Home\Mytag\Crumb"/>
<Crumb:show cateid="44">这里是的内容可以传给$content变量</Crumb:show>
运行效果如下:

thinkphp 自定义标签的更多相关文章
- thinkphp自定义标签库
thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...
- ThinkPHP - 自定义标签库 - 标签驱动
ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html 创建一个类,继承自TagLib类: <?php / ...
- Thinkphp自定义标签
1.定义TagLib目录和文件 TagLibSmarTop.class.php 2.配置文件 <?php return array( 'APP_AUTOLOAD_PATH'=>'@.Ta ...
- (转)ThinkPHP自定义标签
第一:在当前应用下的Conf文件夹中config.php加两个配制项: 'TAGLIB_LOAD' => true,//加载标签库打开 'APP_ ...
- (转) ThinkPHP模板自定义标签使用方法
这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下 转之--http://www.jb51.net/article/51584.htm 使用模板标签可以让网站前台开发 ...
- (转)ThinkPHP自定义模板标签详解
转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就 ...
- ThinkPHP3.2.3 自定义标签库的使用
ThinkPHP 3.2.3 手册中标签库驱动的地址是: http://www.kancloud.cn/manual/thinkphp/1859 标签库的地址是:http://www.kancloud ...
- [JSP]自定义标签库taglib
自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...
- [Java] JSP笔记 - 自定义标签
自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...
随机推荐
- BestCoder Round #81 (div.2) B Matrix
B题...水题,记录当前行是由原矩阵哪行变来的. #include<cstdio> #include<cstring> #include<cstdlib> #inc ...
- java操作pdf添加页眉条码添加水印图片
添加条码页眉以及图片水印 1. 引入jar包 1. itext-4.2.1.jar 2. itext-asian-5.2.0.jar 3. jbarcode-0.2.8.jar ...
- 动态规划:最长上升子序列(LIS)
转载请注明原文地址:http://www.cnblogs.com/GodA/p/5180560.html 学习动态规划问题(DP问题)中,其中有一个知识点叫最长上升子序列(longest incre ...
- HUD-4602 Partition 排列
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4602 把n等效为排成一列的n个点,然后就是取出其中连续的k个点.分两种情况,一种是不包含两端,2^( ...
- CF_402F dp+组合数学
题目链接:http://codeforces.com/problemset/problem/403/D /**算法分析: 这道题综合的考察了dp背包思想和组合数学 */ #include<bit ...
- 在 windows 上面安装 tensorflow
这个是 tensorflow 官网地址, https://www.tensorflow.org/get_started/os_setup#pip_installation_on_windows 上面有 ...
- flot中文说明文档 简版
Flot参考文档: 一.对绘图函数plot的调用:var plot=$.plot(placeholder,data,options) ----------- placeholder --------- ...
- Quartz 多个触发器
http://www.oschina.net/code/snippet_114990_4440 最近项目中要做个定时生成静态html文件东东,7点到19点每5分钟生成一次,其他时间1小时生成一次,刚开 ...
- Chapter 1 Securing Your Server and Network(6):为SQL Server訪问配置防火墙
原文出处:http://blog.csdn.net/dba_huangzj/article/details/38082123,专题文件夹:http://blog.csdn.net/dba_huangz ...
- Android开发_Gson解析
//转换器 GsonBuilder builder = new GsonBuilder(); // 不转换没有 @Expose 注解的字段 builder.excludeFieldsWithoutEx ...