Taglib自定义万能标签扩展 DownLoad

Taglib自定义万能标签扩展 DownLoad

http://www.thinkphp.cn/extend/538.html

用ThinkPHP的标签做网站觉得不够快速,就自己写了一个扩展,感觉挺好的,分享出来,给有需要的TPER。

复制代码
    <?php
      class TagLibEP extends TagLib{
        protected $tags   =  array('select'=>array('attr'=>'table,where,order,limit,id,page,sql,field,key,mod,debug','level'=>3));
        public function _select($attr,$content){
             $tag       = $this->parseXmlAttr($attr,'select');
             $table     =!empty($tag['table'])?$tag['table']:'';
             $order     =!empty($tag['order'])?$tag['order']:'';
             $limit     =!empty($tag['limit'])?intval($tag['limit']):'';
             $id        =!empty($tag['id'])?$tag['id']:'r';
             $where     =!empty($tag['where'])?$tag['where']:' 1 ';
             $key        =!empty($tag['key'])?$tag['key']:'i';
             $mod        =!empty($tag['mod'])?$tag['mod']:'2';
             $page      =!empty($tag['page'])?$tag['page']:false;
             $sql         =!empty($tag['sql'])?$tag['sql']:'';
             $field     =!empty($tag['field'])?$tag['field']:'';
             $debug     =!empty($tag['debug'])?$tag['debug']:false;
             $this->comparison['noteq']= '<>';
             $this->comparison['sqleq']= '=';
             $where     =$this->parseCondition($where);
             $sql         =$this->parseCondition($sql);
             $parsestr.='<?php $m=M("'.$table.'");';
             
             if($sql){
                if($page){
                    $limit=$limit?$limit:10;//如果有page,没有输入limit则默认为10
                    $parsestr.='import("@.ORG.Page");';
                    $parsestr.='$count=count($m->query("'.$sql.'"));';
                    $parsestr.='$p = new Page ( $count, '.$limit.' );';
                    $parsestr.='$sql.="'.$sql.'";';

                    $parsestr.='$sql.=" limit ".$p->firstRow.",".$p->listRows."";';
                    $parsestr.='$ret=$m->query($sql);';
                    $parsestr.='$pages=$p->show();';
                    //$parsestr.='dump($count);dump($sql);';
                }else{
                    $sql.=$limit?(' limit '.$limit):'';
                    $parsestr.='$ret=$m->query("'.$sql.'");'; 
                }
             }else{
                 if($page){
                     $limit=$limit?$limit:10;//如果有page,没有输入limit则默认为10
                     $parsestr.='import("@.ORG.Page");'; 
                     $parsestr.='$count=$m->where("'.$where.'")->count();';
                     $parsestr.='$p = new Page ( $count, '.$limit.' );';
                     $parsestr.='$ret=$m->field("'.$field.'")->where("'.$where.'")->limit($p->firstRow.",".$p->listRows)->order("'.$order.'")->select();';
                     $parsestr.='$pages=$p->show();';
                 }else{
                     $parsestr.='$ret=$m->field("'.$field.'")->where("'.$where.'")->order("'.$order.'")->limit("'.$limit.'")->select();'; 
                 }            
             }      
             if($debug!=false){
                $parsestr.='dump($ret);dump($m->getLastSql());';
             }
             $parsestr.= 'if ($ret): $'.$key.'=0;';
             $parsestr.= 'foreach($ret as $key=>$'.$id.'):';
             $parsestr.= '++$'.$key.';$mod = ($'.$key.' % '.$mod.' );?>';
             $parsestr.= $this->tpl->parse($content);      
             $parsestr.= '<?php endforeach;endif;?>';       
             return $parsestr;
             
        }
    }
    ?>

 

DEMO:
文件放在ThinkPHP\Extend\Driver\TagLib\下,然后在config.php文件中引入,’TAGLIB_PRE_LOAD’ => ‘EP’,
table:表名,where查询条件,order排序,id结果变量,page分页开启,field字段,key循环变量,mod取模,debug是否调试

  1. <EP:select sql=“select * from table order by id desc” limit=“10” page=“1”></EP:select>
  2. <EP:select table=“article” limit=“10”></EP:select>
复制代码

无论是频道页面还是列表页面都可以实现分页了。

    1. <div id=“pages”>{$pages}</div>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/113163.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 缺陷报告编写规范[通俗易懂]

    缺陷报告编写规范[通俗易懂]引言 软件缺陷定义  软件缺陷(Defect):又叫做Bug。即为计算机软件、程序、web应用中存在的某种不符合正常运行的功能问题。也是错误、隐藏,让用户不满意的功能缺陷。从产品内部看,缺陷是软件产品开发或维护过程中存在的错误、毛病等各种问题;从产品外部看,缺陷是系统所需要实现的某种功能的失效或违背。 缺陷报告定义  缺陷报告把测试的过程和结果写成文档,并对发现的问题和缺陷进行分析,为…

    2022年9月18日
    2
  • java小游戏源代码大全_潜艇大战java代码

    java小游戏源代码大全_潜艇大战java代码一、简单介绍这是一个功能相对全的JAVA版坦克大战,界面绘制是通过JAVA的图形化用户界面完成的,包括了菜单界面和游戏界面。其中菜单界面可以供玩家选择重新开始游戏、暂停、继续、是否播放背景音乐、帮助等操作;游戏界面绘制了坦克、河流、草地、鹰碉堡等经典坦克场景,玩家在游戏界面操作坦克开始对战。本游戏使用的主要技术有Swing编程、面向对象编程、多线程编程。本…

    2022年10月3日
    2
  • 创建Java中的线程池

    创建Java中的线程池

    2021年5月6日
    109
  • MPEG-2_mpeg编码模式包括

    MPEG-2_mpeg编码模式包括作者:haibara来源:pcicp.com本FAQ由(haibara)翻译,期间受到kaito_mkid(pcicp)帮助,在此感谢,由于Newbie的关系,如有翻译错误,还请各位指出,由Doom9的bond编撰的原文。译者注:基本专业名称我都以小括号形式加以解释,详细信息请自行查阅资料。什么是MPEG-4?MPEG-4(ISO14496)是由制定了我们熟知的MPEG-1(MP3,…

    2022年9月19日
    4
  • 30 分钟未付款取消订单,怎么做?

    30 分钟未付款取消订单,怎么做?

    2022年2月14日
    38
  • 用户行为路径分析报告_spark用户行为分析

    用户行为路径分析报告_spark用户行为分析请看题:已知用户行为表tracking_log,大概字段有:(user_id用户编号,op_id操作编号,op_time操作时间)要求:统计每天符合以下条件的用户数:A操作之后是B操作,AB操作必须相邻。生成数据,可以在sqlfiddle中测试:createtabletracking_log(idintprimarykeyAUTO_INCREMENT,user_idintnotnull,op_idchar(4)notnull,op

    2022年8月24日
    9

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号