关于标签的个人理解是 拼凑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 自定义标签的更多相关文章

  1. thinkphp自定义标签库

    thinkphp ~ php中 的类, 的成员变量, 本身是没有类型说明的, 那么我怎么知道它的类型呢? 或初始值呢? 通常在类定义中, 如果能给一个初始值的(对于已知简单类型的),最好给一个初始值, ...

  2. ThinkPHP - 自定义标签库 - 标签驱动

    ThinkPHP 官方文档:http://document.thinkphp.cn/manual_3_2/taglib_driver.html 创建一个类,继承自TagLib类: <?php / ...

  3. Thinkphp自定义标签

    1.定义TagLib目录和文件  TagLibSmarTop.class.php 2.配置文件 <?php return array( 'APP_AUTOLOAD_PATH'=>'@.Ta ...

  4. (转)ThinkPHP自定义标签

    第一:在当前应用下的Conf文件夹中config.php加两个配制项:             'TAGLIB_LOAD' => true,//加载标签库打开             'APP_ ...

  5. (转) ThinkPHP模板自定义标签使用方法

    这篇文章主要介绍了ThinkPHP模板自定义标签使用方法,需要的朋友可以参考下  转之--http://www.jb51.net/article/51584.htm   使用模板标签可以让网站前台开发 ...

  6. (转)ThinkPHP自定义模板标签详解

    转之--http://www.thinkphp.cn/topic/6258.html 模板标签让网站前台开发更加快速和简单,这让本该由程序猿才能完成的工作,现在只要稍懂得HTM的人也能轻易做到,这也就 ...

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

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

  8. [JSP]自定义标签库taglib

    自定义标签的步骤 自定义标签的步骤大概有三步: 1.继承javax.servlet.jsp.tagext.*下提供的几个标签类,如Tag.TagSupport.BodyTagSupport.Simpl ...

  9. [Java] JSP笔记 - 自定义标签

    自定义标签的创建步骤: 自定义标签的四大功能: 自定义标签的类结构: 在 1.0 中呢, 可以将 <body-content> 的值设置为 JSP, 2.0中则不允许在自定义标签体中出现j ...

随机推荐

  1. ACM2027

    统计元音 Problem Description 统计每个元音字母在字符串中出现的次数.   Input 输入数据首先包括一个整数n,表示测试实例的个数,然后是n行长度不超过100的字符串.   Ou ...

  2. 局域网内Linux服务器时间同步

    局域网内Linux服务器时间同步   1.将一台能够上网的服务器作为时间服务器:  # /usr/bin/rdate -s time-b.timefreq.bldrdoc.gov //将时间服务器与互 ...

  3. Redis学习手册

    为什么自己当初要选择Redis作为数据存储解决方案中的一员呢?现在能想到的原因主要有三.其一,Redis不仅性能高效,而且完全免费.其二,是基于C/C++开发的服务器,这里应该有一定的感情因素吧.最后 ...

  4. JavaScript- The Good Parts Chapter 3 Objects

    Upon a homely object Love can wink.—William Shakespeare, The Two Gentlemen of Verona The simple type ...

  5. mongodb的高级操作(聚合框架)

    group by 查询 不要用java驱动带的group by ,要用2.2版本后的aggregate聚合框架来搞,经过试验速度快一倍 参考 官网:http://docs.mongodb.org/ma ...

  6. firefox和chrome对于favicon.ico关于content-security-policy的不同处理

    1.favicon.ico是网站的title图标 2.在设置CSP时,举例如下,表示只允许来源为https://my.alipay.com的图片,如果不是,则向指定的url(report.php)发出 ...

  7. android_ViewPager_实现导航页

    android_ViewPager_实现导航页 既然是实现导航页的效果,那么我们肯定是要实现ViewPager的 要实现的效果如下 1.用户进入欢迎页面 2.判断是否是第一次进入,如果是,则进入导航页 ...

  8. Windows下Apache+Tomcat+jsp+php的服务器整合配置经验总结

    对于Apache+Tomcat+jsp+php的整合,针对不同的Tomcat和apache的版本,稍微有些区别. 一.所需软件 (1)JDK: jdk-7u15-windows-x64.exejdk的 ...

  9. TCP/IP 中的二进制反码求和算法

    对于这个算法,很多书上只是说一下思路,没有具体的实现.我在这里举个例子吧 以4bit(计算方便一点,和16bit是一样的)做检验和来验证. 建设原始数据为 1100 , 1010 , 0000(校验位 ...

  10. direct3D directX

    direct3D只是directX其中一个增强功能 DirectX是由很多API组成的,按照性质分类,可以分为四大部分,显示部分.声音部分.输入部分和网络部分. 显示部分担任图形处理的关键,分为Dir ...