`
xitong
  • 浏览: 6438907 次
文章分类
社区版块
存档分类
最新评论

thinkphp自定义标签,view直接标签连接数据

 
阅读更多

首先,需要在

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 楼 huangbye 2015-06-09  
其实这也没什么卵用!

相关推荐

    thinkphp chm chm文档 齐全

    1. 数据库连接:ThinkPHP提供了多种数据库驱动,如MySQL、SQLite等,CHM文档详述了如何配置数据库连接。 2. ORM操作:ORM(Object-Relational Mapping)允许开发者用面向对象的方式来操作数据库,包括增删改查、...

    thinkphp程序源码

    路由在ThinkPHP中起到了连接URL与控制器方法的关键作用,允许开发者自定义URL结构,实现更加灵活的页面调用。通过配置路由规则,可以实现URL美化,提高用户体验,同时方便API接口的设计。 4. **自动加载** ...

    ThinkPHP_3.0_Full

    通过插件机制,开发者可以轻松扩展ThinkPHP的功能,实现自定义的中间件、标签库等。同时,社区提供了大量的第三方插件和扩展,满足不同项目的需求。 总结,ThinkPHP 3.0 是一个功能全面、易学易用的PHP开发框架,...

    基于thinkphp图书管理系统

    在ThinkPHP中,Model负责数据处理和业务逻辑,View负责显示结果,Controller负责接收用户请求并调用Model进行处理,最后更新View展示给用户。 2. ThinkPHP框架特点: - 快速:ThinkPHP提供了丰富的内置组件和助手...

    ThinkPHP3.1.3_Full完整版

    1. MVC模式:ThinkPHP 3.1.3遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据模型和用户界面分离,使代码结构清晰,易于维护。 2. 模板引擎:内建的模板引擎支持模板继承和布局,便于快速构建前端界面...

    ThinkPHP2.1 常见问题&开发技巧

    6. 自定义标签库:创建自定义标签库,实现模板层的复用和扩展,提高代码的可读性。 7. AOP(面向切面编程):利用ThinkPHP的事件系统,实现AOP编程,提高代码模块化和解耦。 总之,《ThinkPHP2.1 常见问题&开发...

    ThinkPHP2.0完全开发手册

    - **基础概念**:ThinkPHP2.0采用了MVC(Model-View-Controller)设计模式,通过将业务逻辑、数据处理和界面展示分离来提高开发效率和维护性。 - **获取ThinkPHP**:可以通过官方网站下载最新版本,或者通过Git仓库...

    ThinkPHP2.0开发手册

    15. **扩展开发**:手册还会介绍如何扩展ThinkPHP2.0框架,包括自定义标签库、行为(Behavior)、服务提供者(Service Provider)等。 通过《ThinkPHP2.0开发手册》的学习,开发者不仅可以掌握ThinkPHP2.0的基本...

    THINKPHP框架实例

    ThinkPHP内置了模板引擎,支持自定义标签库,使得视图层的开发更加灵活。 总结,ThinkPHP框架以其简洁的语法、丰富的功能和良好的社区支持,成为PHP开发者的首选之一。通过深入理解并实践"THINKPHP框架实例",...

    THINKPHP 2.0 核心文件

    7. `TagLib.php`:标签库类,支持自定义模板标签。 8. `Log.php`:日志处理类,提供多种日志记录方式。 三、MVC模式 THINKPHP 2.0 实现了Model-View-Controller(MVC)的设计模式,使得代码结构清晰,职责分明。 - ...

    ThinkPHP3.1+实例包

    ThinkPHP遵循MVC(Model-View-Controller)设计模式,将业务逻辑、数据和显示分离,便于代码管理和维护。理解模型(Model)如何处理数据,视图(View)如何展示,以及控制器(Controller)如何协调两者至关重要。 ...

    基于thinkphp的开源oa系统

    这个系统利用了ThinkPHP的MVC(Model-View-Controller)设计模式,使得业务逻辑、数据处理和用户界面分离,从而提高了代码的可读性和可维护性。 【描述】提到的"基于bootstrap的响应式oa系统"意味着该OA系统采用了...

    Thinkphp 3.2完全开发手册PDF版

    6. **模板引擎**:Thinkphp 3.2的模板引擎支持自定义标签和助手函数,帮助开发者编写更加简洁、高效的视图代码。 7. **控制器与行为**:手册涵盖控制器的生命周期,以及如何定义和使用行为,实现代码复用和业务逻辑...

    ThinkPhP3.1.2完全开发手册

    6. **数据库操作**:涵盖数据库连接管理,SQL语句的执行,以及ActiveRecord模式的应用,包括数据查询、增删改查操作、事务处理等。 7. **缓存机制**:介绍ThinkPHP的缓存策略,如文件缓存、内存缓存(如Memcached、...

    配置好的thinkphp,包括简单示例

    ThinkPHP内置了模板引擎,允许开发者使用PHP语法编写模板,通过`{$}`符号输出变量,`&lt;volist&gt;`等标签处理循环数据。 10. **错误处理与调试** ThinkPHP提供了详细的错误报告和日志记录功能,通过`config.php`中的`...

    thinkphp3.2.3开发taskphp

    【标签】"taskphp thinkphp3.2"进一步强调了讨论的主题,TaskPHP是一个专为ThinkPHP3.2设计的扩展或应用,它可能包含了自定义的控制器、模型、视图和库文件,以适应特定的任务处理需求。开发者可能通过继承和扩展...

    ThinkPHP图片

    - **模板引擎**:详述了ThinkPHP的模板语法,如变量、常量、函数调用、自定义标签等,以及如何进行模板继承和布局设计。 - **异常处理**:介绍了异常处理机制,包括自定义异常类、捕获和抛出异常,以及错误日志...

Global site tag (gtag.js) - Google Analytics