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 相关文章推荐
PHP4.04简明安装
Oct 09 PHP
PHP循环获取GET和POST值的代码
Apr 09 PHP
linux环境apache多端口配置虚拟主机的方法深入介绍
Jun 09 PHP
php 强制下载文件实现代码
Oct 28 PHP
PHP根据IP地址获取所在城市具体实现
Nov 27 PHP
使用PHP生成二维码的两种方法(带logo图像)
Mar 14 PHP
php获取textarea的值并处理回车换行的方法
Oct 20 PHP
php表单敏感字符过滤类
Dec 08 PHP
PHP实现WebService的简单示例和实现步骤
Mar 27 PHP
php实现每天自动变换随机问候语的方法
May 12 PHP
PHP实现bitmap位图排序与求交集的方法
Jul 28 PHP
深入理解Yii2.0乐观锁与悲观锁的原理与使用
Jul 26 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
十天学会php之第九天
2006/10/09 PHP
杏林同学录(二)
2006/10/09 PHP
深入解析PHP内存管理之谁动了我的内存
2013/06/20 PHP
bootstrap table 服务器端分页例子分享
2015/02/10 Javascript
js完美实现@提到好友特效(兼容各大浏览器)
2015/03/16 Javascript
jQuery弹出层插件Lightbox_me使用指南
2015/04/21 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
AngularJS 最常用的功能汇总
2016/02/17 Javascript
javascript读取文本节点方法小结
2016/12/15 Javascript
Vue2.0 从零开始_环境搭建操作步骤
2017/06/14 Javascript
ActiveX控件的使用-js实现打印超市小票功能代码详解
2017/11/22 Javascript
Node.js应用设置安全的沙箱环境
2018/04/23 Javascript
webpack4 SCSS提取和懒加载的示例
2018/09/03 Javascript
Vue源码中要const _toStr = Object.prototype.toString的原因分析
2018/12/09 Javascript
JS监听组合按键思路及实现过程
2020/04/17 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
python实现文本去重且不打乱原本顺序
2016/01/26 Python
Eclipse中Python开发环境搭建简单教程
2016/03/23 Python
Python实现快速排序算法及去重的快速排序的简单示例
2016/06/26 Python
Python&amp;&amp;GDAL实现NDVI的计算方式
2020/01/09 Python
pytorch使用tensorboardX进行loss可视化实例
2020/02/24 Python
python实现扫雷游戏
2020/03/03 Python
Boden美国官网:英伦原创时装品牌
2017/07/03 全球购物
函数指针的定义是什么
2016/08/14 面试题
DBA的职责都有哪些
2012/05/16 面试题
大学毕业生简单自荐信
2013/11/05 职场文书
优秀毕业生事迹材料
2014/02/12 职场文书
理工类毕业自我鉴定
2014/02/20 职场文书
学校纪律作风整改措施思想汇报
2014/10/11 职场文书
区域经理岗位职责
2015/02/02 职场文书
2015年社区文体活动总结
2015/03/25 职场文书
《乘法分配律》教学反思
2016/02/24 职场文书
请假条应该怎么写?
2019/06/24 职场文书
2019年圣诞节祝福语集锦
2019/12/25 职场文书
MySQL中distinct与group by之间的性能进行比较
2021/05/26 MySQL
2021好看的国漫排行榜前十名 《完美世界》上榜,《元龙》排名第一
2022/03/18 国漫