thinkphp自定义标签,view直接标签连接数据
来源:互联网 发布:斗鱼人气软件 2016 编辑:程序博客网 时间:2024/06/06 02:08
首先,需要在
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表里的内容
- thinkphp自定义标签,view直接标签连接数据
- thinkphp 自定义标签
- ThinkPHP 自定义标签
- thinkphp自定义标签
- ThinkPHP自定义标签
- thinkphp自定义标签
- 【ThinkPHP】自定义标签
- thinkphp自定义标签
- thinkphp 3.2自定义标签
- 自定义标签View
- ThinkPHP模板自定义标签使用方法
- thinkphp自定义模板标签(一)
- thinkphp自定义模板标签(二)
- ThinkPHP模板自定义标签使用方法
- 自定义view--打折标签view
- 自定义view之热门标签
- 使用merge标签自定义View
- jsp自定义数据标签
- 怎样才能开发出好的软件(五)
- 安卓第六天————通讯录的简单实现源码
- Hibernate常见的集合映射主要有Set,List,Array,Map,Bag
- Android之菜单总结
- Android菜单功能的实现
- thinkphp自定义标签,view直接标签连接数据
- win7查看.hlp帮助文件办法(安装KB917607补丁包)
- 利用BLCR加快android的启动过程
- 浅谈HTML
- MFC程序的消息处理顺序
- android设置背景色为透明
- Android菜单(Menu)
- C++ STL Vector
- http://www.voyce.com !lock 不能正常执行