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实际应用经验篇(1)
Oct 09 PHP
php 常用字符串函数总结
Mar 15 PHP
PHP下通过系统信号量加锁方式获取递增序列ID
Sep 25 PHP
php的hash算法介绍
Feb 13 PHP
Laravel框架路由配置总结、设置技巧大全
Sep 03 PHP
ThinkPHP模板输出display用法分析
Nov 26 PHP
php实现字符串首字母大写和单词首字母大写的方法
Mar 14 PHP
PHP的运行机制与原理(底层)
Nov 16 PHP
PHP生成图片缩略图类示例
Jan 12 PHP
thinkphp 抓取网站的内容并且保存到本地的实例详解
Aug 25 PHP
PHP实现十进制数字与二十六进制字母串相互转换操作示例
Aug 10 PHP
浅谈PHP进程管理
Mar 08 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 项目的方法
2007/01/02 PHP
PHP中使用sleep函数实现定时任务实例分享
2014/08/21 PHP
初识Laravel
2014/10/30 PHP
PHP中error_reporting函数用法详细介绍
2017/06/11 PHP
微信公众号之主动给用户发送消息功能
2019/06/22 PHP
javascript里的条件判断
2007/02/27 Javascript
jquery 问答知识整理
2010/02/11 Javascript
日历查询的算法 如何计算某一天是星期几
2012/12/12 Javascript
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
js控制div弹出层实现方法
2015/05/11 Javascript
日常收藏的jquery技巧
2015/12/02 Javascript
JS实现日期时间动态显示的方法
2015/12/07 Javascript
jQuery根据name属性进行查找的用法分析
2016/06/23 Javascript
jQuery实现可移动选项的左右下拉列表示例
2016/12/26 Javascript
JavaScript实现简单生成随机颜色的方法
2017/09/21 Javascript
nodejs中安装ghost出错的原因及解决方法
2017/10/23 NodeJs
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
angular5 子组件监听父组件传入值的变化方法
2018/09/30 Javascript
angularjs使用div模拟textarea文本框的方法
2018/10/02 Javascript
Vue将props值实时传递 并可修改的操作
2020/08/09 Javascript
Python 代码性能优化技巧分享
2012/08/07 Python
对python numpy数组中冒号的使用方法详解
2018/04/17 Python
解决python3中的requests解析中文页面出现乱码问题
2019/04/19 Python
pytorch 获取层权重,对特定层注入hook, 提取中间层输出的方法
2019/08/17 Python
Windows系统下pycharm中的pip换源
2020/02/23 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
canvas压缩图片以及卡片制作的方法示例
2018/12/04 HTML / CSS
尼克松手表官网:Nixon手表
2019/03/17 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
行政办公员自我评价分享
2013/12/14 职场文书
高一新生军训方案
2014/05/12 职场文书
学校创先争优活动总结
2014/08/28 职场文书
音乐教育专业自荐信
2014/09/18 职场文书
2015年企业工作总结范文
2015/04/28 职场文书
Hive常用日期格式转换语法
2022/06/25 数据库