ThinkPHP中html:list标签用法分析


Posted in PHP onJanuary 09, 2016

本文实例分析了ThinkPHP中html:list标签用法。分享给大家供大家参考,具体如下:

<html:list id="checkList" name="user" style="list" checkbox="true" action="true" datasource="list" show="id:编号|8%,title:标题:edit,content:内容,create_time|toDate='Y-m-d H#i#s':添加时间,status|getStatus:状态" actionlist="forbid|resume:禁用|恢复,edit:编辑" />

ThinkPHP的html标签库中的list标签功能强大,但没有文档.只好看源码了.马马虎虎看了下,大概如下:

datasource和show必须要,datasource是数据源名称,也就是assign所指向的变量,show是最复杂的,等会再讲

pk是主键名,默认为id;style是css样式的class,因为整个list标签会被编译成table,比如这里为mylist,那么样式表中的table.mylist样式就会用在这;checkbox是否显示复选框;action是否显示操作列

show部分:用逗号分隔不同的字段,如:

id:编号|8%,account:用户名|90px:edit:账号,phone:地址,remark:备注,status|getStatus:状态

每字段中,以冒号为分隔符,可以分为几部分,每部分中可以再以|分隔,

第一部分:id,表示为结果集中的id字段,status|getStatus,表示status字段,但是要经过getStatus函数处理,这儿的函数可以是php自带函数,也可以是thinkphp的common/functions.php中的函数,也可以是项目目录conf/common.php中的自定义函数
第二部分:编号|8%表示标题行中显示字段为标题,宽度为8%,用户名|90px中的90px也是宽度
第三部分:如edit,表示javascript的edit函数,其参数为主键值,如id为1的用户,用户名(account)处的显示值为一个链接,点击后会执行javascript:edit(1);
第四部分:这部分一般不用设置,如账号,表示account(用户名)标题行中的"用户名"鼠标移到上面后会显示"按账号排序",而如果不设置的话,是"按用户名排序",也就是说不设置的话"按"和"排序"中间的几个字是标题显示一样的.

再说actionlist,如果设置了action="true",但是没有设置actionlist的话,就会显示默认的"编辑"和"删除"操作,参数都是主键的值.以我们自设的函数来讲,比如设为changePassword:修改密码,这儿就会变成类似

<a href="javascript:changePassword('1')>修改密码</a>

如果有|,就有些特殊了,目前的html标签库强制把这种情况解释为status对应的操作,也就是说,datasource中必须有一个status字段,这个字段flase,那么显示|前的部分,否则为后部分,具体说:forbid|resume:禁用|恢复,如status为0,则<a href="javascript:forbid('1');>禁用</a>,否则为<a href="javascript:resume('1');>恢复</a>

总的来说,html:list功能很不错,特别是其中可以自定每列宽度很好.但是还存在一些不足之处或一些开发者需要注意的地方:

1. actionlist中如有|,就与datasource中的status字段挂勾,这个很不爽.因为一来状态可能不止两种,二来其他的字段可能也需要根据情况显示不同的文字执行不同的操作.
2. 链接用javascript表示,有时还行,但有时更希望直接用url表示,比如<a href="user/edit/id/1">编辑</a>
3. 链接中的javascript函数命名和某些html元素命名很简单,有可能会与某些js脚本或html元素命名冲突,函数名如del,change,edit,over,out等,html元素如checkbox的id为check
4. 标题的按XX排序的功能不能禁用.有很多时候并不需要这种功能,特别是不需要每行都有这种功能.当然,可以在js函数中修改.
5. 上述的js函数都不是在标签中定义,而只是调用.函数定义在自己的js脚本中,我是直接用的thinkphp的RABC的示例,所以也没研究具体的js文件,暂时也不想研究了.不过大家如果增加了自定义的操作,那就得自己写出js函数哟

TP的标签库是个好东西。

例如,一个包含复选框的标签列表可以这样写:

<html:list id="list" name="user" datasource="info" show="id:ID,username:用户名,value:用户身份,fullname:真实姓名,sex:性别,tel:联系电话,class:班级,home:宿舍" checkbox="true" style="list" action="true" actionlist="edit:编辑,delarticle:删除,sh:审核"/>

id和name就不多说了
datasource是PHP代码传过来的内容信息
show:""里面是表格的列信息
id:ID代表datasource里,字段名为id的信息,显示在列名为ID的列下

如果是
articleTitle:文章标题:function

代表的意思是字段为articleTitle下的内容显示在"文章标题"这个列下,同时,为每个“文章标题”添加了一个javascript:function("主键")的链接,用于其他操作

checkbox="true"代表显示复选框
style="list"代表使用list的风格。
action="true"代表显示操作列
actionlist="edit:编辑,delarticle:删除,sh:审核"代表操作列的内容

格式:

执行函数:显示名称。

希望本文所述对大家基于thinkPHP框架的PHP程序设计有所帮助。

PHP 相关文章推荐
PHP中实现图片的锐化
Oct 09 PHP
编写漂亮的代码 - 将后台程序与前端程序分开
Apr 23 PHP
PHP的单引号和双引号 字符串效率
May 27 PHP
php中记录用户访问过的产品,在cookie记录产品id,id取得产品信息
May 04 PHP
基于PHP编程注意事项的小结
Apr 27 PHP
解析yahoo邮件用phpmailer发送的实例
Jun 24 PHP
php实现分页工具类分享
Jan 09 PHP
destoon找回管理员密码的方法
Jun 21 PHP
详解WordPress中用于更新和获取用户选项数据的PHP函数
Mar 08 PHP
iOS10推送通知开发教程
Sep 19 PHP
ThinkPHP框架实现数据增删改
May 07 PHP
php适配器模式简单应用示例
Oct 23 PHP
thinkphp中字符截取函数msubstr()用法分析
Jan 09 #PHP
Yii2框架引用bootstrap中日期插件yii2-date-picker的方法
Jan 09 #PHP
yii2框架中使用下拉菜单的自动搜索yii-widget-select2实例分析
Jan 09 #PHP
yii2中使用Active Record模式的方法
Jan 09 #PHP
YII2.0之Activeform表单组件用法实例
Jan 09 #PHP
yii2中添加验证码的实现方法
Jan 09 #PHP
PHP中的数组处理函数实例总结
Jan 09 #PHP
You might like
全国FM电台频率大全 - 5 内蒙古自治区
2020/03/11 无线电
VFP与其他应用程序的集成
2006/10/09 PHP
优化使用mysql存储session的php代码
2008/01/10 PHP
php解决抢购秒杀抽奖等大流量并发入库导致的库存负数的问题
2014/06/19 PHP
Yii2实现上下联动下拉框功能的方法
2016/08/10 PHP
PHP 微信扫码支付源代码(推荐)
2016/11/03 PHP
JS 容错处理代码, 屏蔽错误信息
2021/03/09 Javascript
mysql输出数据赋给js变量报unterminated string literal错误原因
2010/05/22 Javascript
jquery学习笔记 用jquery实现无刷新登录
2011/08/08 Javascript
禁止ajax缓存获取程序最新数据的方法
2013/11/19 Javascript
js中对象的声明方式以及数组的一些用法示例
2013/12/11 Javascript
动态加载js、css等文件跨iframe实现
2014/02/24 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
JavaScript对表格或元素按文本,数字或日期排序的方法
2015/05/26 Javascript
javascript拖拽应用实例(二)
2016/03/25 Javascript
JS实现兼容各种浏览器的高级拖动方法完整实例【测试可用】
2016/06/21 Javascript
前端主流框架vue学习笔记第一篇
2017/07/26 Javascript
JavaScript数据结构与算法之二叉树插入节点、生成二叉树示例
2019/02/21 Javascript
mpvue开发音频类小程序踩坑和建议详解
2019/03/12 Javascript
JS异步错误捕获的一些事小结
2019/04/26 Javascript
使用原生JS实现滚轮翻页效果的示例代码
2020/05/31 Javascript
Python中的Numeric包和Numarray包使用教程
2015/04/13 Python
Python实现二分查找算法实例
2015/05/26 Python
Python入门_浅谈for循环、while循环
2017/05/16 Python
Python实现的快速排序算法详解
2017/08/01 Python
python使用logging模块发送邮件代码示例
2018/01/18 Python
python-视频分帧&amp;多帧合成视频实例
2019/12/10 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
爬虫代理的cookie如何生成运行
2020/09/22 Python
高中自我评价分享
2013/12/05 职场文书
网络技术专业求职信
2014/02/18 职场文书
java Nio使用NioSocket客户端与服务端交互实现方式
2021/06/15 Java/Android
Node与Python 双向通信的实现代码
2021/07/16 Javascript
关于MySQL中的 like操作符详情
2021/11/17 MySQL
使用Python开发贪吃蛇游戏 SnakeGame
2022/04/30 Python
Win11怎么添加用户?Win11添加用户账户的方法
2022/07/15 数码科技