首先,需要在
ThinkPHP\Lib\Think\Template\TagLib\目录下增加一个文件名叫:TagLibZpass.class.php
TagLibZpass.class.php:
<?php
/* Zpass自定义标签 design by zpass 16852868@qq.com,请别加QQ好友- -! */
class TagLibZpass extends TagLib{
// 标签定义
protected $tags = array(
// 标签定义: attr 属性列表 close 是否闭合(0 或者1 默认1) alias 标签别名 level 嵌套层次
'select'=>array('attr'=>'table,limit,order,where,field','level'=>3),
);
public function _select($attr,$content)
{
static $_iterateParseCache = array();
//如果已经解析过,则直接返回变量值
$cacheIterateId = md5($attr.$content);
if(isset($_iterateParseCache[$cacheIterateId]))
return $_iterateParseCache[$cacheIterateId];
$tag = $this->parseXmlAttr($attr,'table');
$db=M($tag['table']);
$list=$db->where($tag['where'])->order($tag['order'])->limit($tag['limit'])->field($tag['field'])->select();
preg_match_all("/\[field\:\w*\]/",$content,$match);
$match=$match[0];
$match=array_unique($match);//去掉数组重复项
foreach($match as $i=>$vo){
$field[$i]=substr($vo,7,count($vo)-2);
}
foreach($list as $i=>$value){
if($i==0){
$parseStr=$content;
}else{
$parseStr=$parseStr.$content;
}
foreach($match as $j=>$vo){
$parseStr=str_replace($vo,$value[$field[$j]],$parseStr);
}
}
$_iterateParseCache[$cacheIterateId] = $parseStr;
if(!empty($parseStr)) {
return $this->tpl->parse($parseStr);
}
return ;
}
}
?>
然后在视图上写上
<taglib name='zpass' />
调用的方法是
<zpass:select table="classes" order="sort desc" field="id,title" limit="3" >
<span class="marginleft_1"><a href='{:U("News/index?id=[field:id]")}'>[field:title]</a></span>
</zpass:select>
注意复制的话请view
plain在复制,手工复制的源代码不正确
这个很容易理解吧
我这个只是例子,代表可以自由扩展THINKPHP标签...做自己的特色标签
以上标签例子实际是查询classes表里的内容
分享到:
相关推荐
1. 数据库连接:ThinkPHP提供了多种数据库驱动,如MySQL、SQLite等,CHM文档详述了如何配置数据库连接。 2. ORM操作:ORM(Object-Relational Mapping)允许开发者用面向对象的方式来操作数据库,包括增删改查、...
路由在ThinkPHP中起到了连接URL与控制器方法的关键作用,允许开发者自定义URL结构,实现更加灵活的页面调用。通过配置路由规则,可以实现URL美化,提高用户体验,同时方便API接口的设计。 4. **自动加载** ...
通过插件机制,开发者可以轻松扩展ThinkPHP的功能,实现自定义的中间件、标签库等。同时,社区提供了大量的第三方插件和扩展,满足不同项目的需求。 总结,ThinkPHP 3.0 是一个功能全面、易学易用的PHP开发框架,...
在ThinkPHP中,Model负责数据处理和业务逻辑,View负责显示结果,Controller负责接收用户请求并调用Model进行处理,最后更新View展示给用户。 2. ThinkPHP框架特点: - 快速:ThinkPHP提供了丰富的内置组件和助手...
1. MVC模式:ThinkPHP 3.1.3遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据模型和用户界面分离,使代码结构清晰,易于维护。 2. 模板引擎:内建的模板引擎支持模板继承和布局,便于快速构建前端界面...
6. 自定义标签库:创建自定义标签库,实现模板层的复用和扩展,提高代码的可读性。 7. AOP(面向切面编程):利用ThinkPHP的事件系统,实现AOP编程,提高代码模块化和解耦。 总之,《ThinkPHP2.1 常见问题&开发...
- **基础概念**:ThinkPHP2.0采用了MVC(Model-View-Controller)设计模式,通过将业务逻辑、数据处理和界面展示分离来提高开发效率和维护性。 - **获取ThinkPHP**:可以通过官方网站下载最新版本,或者通过Git仓库...
15. **扩展开发**:手册还会介绍如何扩展ThinkPHP2.0框架,包括自定义标签库、行为(Behavior)、服务提供者(Service Provider)等。 通过《ThinkPHP2.0开发手册》的学习,开发者不仅可以掌握ThinkPHP2.0的基本...
ThinkPHP内置了模板引擎,支持自定义标签库,使得视图层的开发更加灵活。 总结,ThinkPHP框架以其简洁的语法、丰富的功能和良好的社区支持,成为PHP开发者的首选之一。通过深入理解并实践"THINKPHP框架实例",...
7. `TagLib.php`:标签库类,支持自定义模板标签。 8. `Log.php`:日志处理类,提供多种日志记录方式。 三、MVC模式 THINKPHP 2.0 实现了Model-View-Controller(MVC)的设计模式,使得代码结构清晰,职责分明。 - ...
ThinkPHP遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据和显示分离,便于代码管理和维护。理解模型(Model)如何处理数据,视图(View)如何展示,以及控制器(Controller)如何协调两者至关重要。 ...
这个系统利用了ThinkPHP的MVC(Model-View-Controller)设计模式,使得业务逻辑、数据处理和用户界面分离,从而提高了代码的可读性和可维护性。 【描述】提到的"基于bootstrap的响应式oa系统"意味着该OA系统采用了...
6. **模板引擎**:Thinkphp 3.2的模板引擎支持自定义标签和助手函数,帮助开发者编写更加简洁、高效的视图代码。 7. **控制器与行为**:手册涵盖控制器的生命周期,以及如何定义和使用行为,实现代码复用和业务逻辑...
6. **数据库操作**:涵盖数据库连接管理,SQL语句的执行,以及ActiveRecord模式的应用,包括数据查询、增删改查操作、事务处理等。 7. **缓存机制**:介绍ThinkPHP的缓存策略,如文件缓存、内存缓存(如Memcached、...
ThinkPHP内置了模板引擎,允许开发者使用PHP语法编写模板,通过`{$}`符号输出变量,`<volist>`等标签处理循环数据。 10. **错误处理与调试** ThinkPHP提供了详细的错误报告和日志记录功能,通过`config.php`中的`...
【标签】"taskphp thinkphp3.2"进一步强调了讨论的主题,TaskPHP是一个专为ThinkPHP3.2设计的扩展或应用,它可能包含了自定义的控制器、模型、视图和库文件,以适应特定的任务处理需求。开发者可能通过继承和扩展...
- **模板引擎**:详述了ThinkPHP的模板语法,如变量、常量、函数调用、自定义标签等,以及如何进行模板继承和布局设计。 - **异常处理**:介绍了异常处理机制,包括自定义异常类、捕获和抛出异常,以及错误日志...