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>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • pycharm-package安装配置[通俗易懂]

    pycharm-package安装配置[通俗易懂]pycharm-package安装配置第一步:打开pycharm软件;第二步:选择菜单栏File→Settings;第三步:选择“Project:XXXXX”这一栏,然后选择“ProjectInterpreter”,点击右边的“+”号;第四步:选择底下的ManageRepositories;第五步:这里可以添加或更改任意下载源,由于默认下载源是国…

  • QCustomPlot使用手册

    QCustomPlot使用手册一、基本画图首先,给个简单的例子:[cpp] viewplain copy print?// 生成数据,画出的是抛物线  QVectordouble> x(101), y(101); // initialize with entries 0..100  for (int i=0; i{    x[i] = i/50.

    2022年10月16日
  • ajax 面试题_javascript面试题大全

    ajax 面试题_javascript面试题大全1、什么是AJAX,为什么要使用Ajax(请谈一下你对Ajax的认识)什么是ajax:AJAX是“Asynchronous JavaScript and XML”的缩写。他是指一种创建交互式网页应用的网页开发技术。Ajax包含下列技术:基于web标准(standards-basedpresentation)XHTML+CSS的表示;使用 DOM(Document ObjectM

  • 实体-联系图(ER图)_实体关系图

    实体-联系图(ER图)_实体关系图我们通常用实体、联系和属性这三个概念来理解现实问题,因此ER模型比较接近人的思维方式。此外,ER模型用简单的图形符号表达系统分析员对问题域的理解,不熟悉计算机技术的用户也能理解它,因此,ER模型可以作为用户与分析员之间有效的交流工具。一、ER模型ER模型中包含3种相互关联的信息:数据对象、数据对象的属性及数据对象彼此之间相互连接的关系。1.数据对象数据对象是对软件必须理解的复合信息…

  • goland 2021.5 x64永久激活码(最新序列号破解)

    goland 2021.5 x64永久激活码(最新序列号破解),https://javaforall.cn/100143.html。详细ieda激活码不妨到全栈程序员必看教程网一起来了解一下吧!

  • webstorm 2022 激活码(注册激活)[通俗易懂]

    (webstorm 2022 激活码)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html1PA3AFINM4-eyJsaWNlbnNlSW…

发表回复

您的电子邮箱地址不会被公开。

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