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新手上路(四)
Oct 09 PHP
PHP学习笔记之数组篇
Jun 28 PHP
PHP获取MSN好友列表类的实现代码
Jun 23 PHP
PHP在网页中动态生成PDF文件详细教程
Jul 05 PHP
destoon文章模块调用企业会员资料的方法
Aug 22 PHP
php将access数据库转换到mysql数据库的方法
Dec 24 PHP
php获取ip及网址的简单方法(必看)
Apr 01 PHP
php文件上传及下载附带显示文件及目录功能
Apr 27 PHP
统计PHP目录中的文件数方法
Mar 05 PHP
PHP实现页面静态化深入讲解
Mar 04 PHP
TP - 比RBAC更好的权限认证方式(Auth类认证)
Mar 09 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中使用cookie来保存用户登录信息的实现代码
2012/03/08 PHP
php fsockopen解决办法 php实现多线程
2014/01/20 PHP
PHP实现的简单日历类
2014/11/29 PHP
PHP中each与list用法分析
2016/01/08 PHP
Yii2.0 RESTful API 基础配置教程详解
2018/12/26 PHP
用JS操作FRAME中的IFRAME及其内容的实现代码
2008/07/26 Javascript
javascript中类的定义及其方式(《javascript高级程序设计》学习笔记)
2011/07/04 Javascript
Js与下拉列表处理问题解决
2014/02/13 Javascript
js获取滚动距离的方法
2015/05/30 Javascript
JavaScript判断IE版本型号
2015/07/27 Javascript
javascript 中的 delete及delete运算符
2015/11/15 Javascript
js脚本编写简单刷票投票系统
2017/06/27 Javascript
ComboBox(下拉列表框)通过url加载调用远程数据的方法
2017/08/06 Javascript
JS构造一个html文本内容成文件流形式发送到后台
2018/07/31 Javascript
ES6函数实现排它两种写法解析
2020/05/13 Javascript
[03:42]2016国际邀请赛中国区预选赛首日现场玩家采访
2016/06/26 DOTA
[01:16:01]VGJ.S vs Mski Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
pyenv命令管理多个Python版本
2017/03/26 Python
win10系统下Anaconda3安装配置方法图文教程
2018/09/19 Python
Python安装与基本数据类型教程详解
2019/05/29 Python
python实现生成Word、docx文件的方法分析
2019/08/30 Python
Python上下文管理器用法及实例解析
2019/11/11 Python
解决python中的幂函数、指数函数问题
2019/11/25 Python
Python自定义聚合函数merge与transform区别详解
2020/05/26 Python
Python 没有main函数的原因
2020/07/10 Python
如何用Django处理gzip数据流
2021/01/29 Python
处理HTML5新标签的浏览器兼容版问题
2017/03/13 HTML / CSS
什么是封装
2013/03/26 面试题
高三毕业典礼主持词
2014/03/27 职场文书
司法局群众路线教育实践活动整改措施思想汇报
2014/10/13 职场文书
学习雷锋精神倡议书
2015/04/27 职场文书
公司规章制度范本
2015/08/03 职场文书
2016国庆促销广告语
2016/01/28 职场文书
2019森林防火宣传标语大全!
2019/07/03 职场文书
告别网页搜索!教你用python实现一款属于自己的翻译词典软件
2021/06/03 Python
vue实现滑动解锁功能
2022/03/03 Vue.js