首页 > php教程 > php手册 > 正文

在模板中使用标签查询数据

php中文网
发布: 2016-06-07 11:39:41
原创
1189人浏览过

新手练手,欢迎吐槽
<?php <br /><br> /**<br>  * 通用自定义定义标签<br>  * 用法:<br>  * 1:载入<br>  *  <taglib></taglib><br>  * 2:调用<br>  * <list><br>  *    {$v.id} -- {$v.name}<br><br>  * </list><br>  * 说明:<br>  * 1.可以直接在标签上面写sql属性<br>  * 2.限制查询条数请用 limit属性<br>  * 3.要数据分页请用page属性,可传2个参数,用逗号分隔,前一个参数当前页码,后一个参数每页查询几条<br>  * 4.显示分页请在视图页面输出 {$pageStr}<br>  * 5.调用模型的方法 用 method="getOne(1,2,3)" 【引号里面直接调用方法】<br>  */<br><br> namespace Think\Template\TagLib;<br><br> use Think\Template\TagLib;<br><br> class Lx extends TagLib<br> {<br><br>     protected $tags = array(<br>         'list' =&gt; array('attr' =&gt; 'table,order,limit,where,join,field,page,relation,method,cache,dump,sql', 'close' =&gt; 1),<br>     );<br><br>     public function _list($attr, $content)<br>     {<br>         $defaultAttr = explode(',', $this-&gt;tags['list']['attr']);<br>         $vars = array();<br>         foreach ($defaultAttr as $v) {<br>             if ($attr[$v]) {<br>                 $vars[$v] = $attr[$v];<br>             }<br>         }<br>         if (!isset($vars['table']) || empty($vars['table'])) {<br>             return false;<br>         }<br>         //是用模型中的特定方法还是select<br>         if (isset($vars['method'])) {<br>             $select = '-&gt;' . $vars['method'];<br>         } else {<br>             $select = "-&gt;select()";<br>         }<br>         //limit and page<br>         $limit = '';<br><br>         if (!isset($vars['page'])) {<br>             if (isset($vars['limit'])) {<br>                 $limit = '-&gt;limit("' . $vars['limit'] . '")';<br>             }<br>         } else {<br>             $limit = '-&gt;page("$page,$rows")';<br>         }<br>         //dump 调试<br>         $dump = '';<br>         if (isset($vars['dump']) &amp;&amp; $vars['dump'] == "true") {<br>             $dump = '<?php dump($data) ?>';<br>         }<br>         //getLastSql 调试<br>         $lastSql = '';<br>         if (isset($vars['sql']) &amp;&amp; $vars['sql'] == "true") {<br>             $lastSql = ' echo "<br>" . M()-&gt;getLastSql(); ';<br>         }<br>         unset($vars['page'], $vars['limit'], $vars['method'], $vars['dump'], $vars['sql']);<br>         $tmpStr = '';<br>         $where = '';<br>         $join = '';<br>         foreach ($vars as $k =&gt; $v) {<br>             if ($k == 'table') {<br>                 continue;<br>             }<br>             if ($k == 'where') {<br>                 $where = $v;<br>             }<br>             if ($k == 'join') {<br>                 $join = $v;<br>             }<br>             $tmpStr .= '-&gt;' . $k . '("' . $v . '")';<br>         }<br>         $str = '<?php <br />             $page = I("p", false) ? I("p") : I("page");<br>             $page = empty($page) ? 1 : $page;<br>             $rows = I("rows", 15);<br>             $table =  ' . ucfirst($vars['table']) . ';<br>             $data = D("$table")' . $tmpStr . $limit . $select . ';<br>             foreach($data as $k=&gt;$v): ?&gt;';<br>         $str .= $content;<br>         $str .= '<?php <br />              if(!is_array($v)){<br>                  break ;<br>              }<br>              endforeach;<br>              '.$lastSql.'<br>              $total = M("$table")-&gt;where("' . $where . '")-&gt;join("' . $join . '")-&gt;count();<br>              $Page = new \Think\Page($total,$rows);<br>              $pageStr = $Page-&gt;show();<br>         ?&gt;';<br>         $str .= $dump;<br>         return $str;<br>     }<br><br><br> }

AD:真正免费,域名+虚机+企业邮箱=0元

最佳 Windows 性能的顶级免费优化软件
最佳 Windows 性能的顶级免费优化软件

每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
热门推荐
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号