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 相关文章推荐
phpMyAdmin 安装教程全攻略
Mar 19 PHP
PHP配置文件中最常用四个ini函数
Mar 19 PHP
php过滤危险html代码
Aug 18 PHP
php 文章采集正则代码
Dec 28 PHP
yii框架源码分析之创建controller代码
Jun 28 PHP
php生成随机颜色的方法
Nov 13 PHP
一个PHP实现的轻量级简单爬虫
Jul 08 PHP
PHP session会话操作技巧小结
Sep 27 PHP
thinkPHP中_initialize方法实例分析
Dec 05 PHP
php中序列化与反序列化详解
Feb 13 PHP
php redis实现文章发布系统(用户投票系统)
Mar 04 PHP
在Laravel 的 Blade 模版中实现定义变量
Oct 14 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 前一天或后一天的日期
2008/06/28 PHP
PHPThumb PHP 图片缩略图库
2012/03/11 PHP
深入PHP运行环境配置的详解
2013/06/04 PHP
处理单名多值表单的详解
2013/06/08 PHP
详解Yii2 rules 的验证规则
2016/12/02 PHP
php使用socket调用http和smtp协议实例小结
2019/07/26 PHP
JavaScript 原型与继承说明
2010/06/09 Javascript
ajax中get和post的说明及使用与区别
2012/12/23 Javascript
js导出格式化的excel 实例方法
2013/07/17 Javascript
一个JavaScript去除字符串末尾的空白实例代码
2014/09/22 Javascript
JavaScript运动减速效果实例分析
2015/08/04 Javascript
使用requestAnimationFrame实现js动画性能好
2015/08/06 Javascript
JavaScript中的Array 对象(数组对象)
2016/06/02 Javascript
JS根据生日月份和日期计算星座的简单实现方法
2016/11/24 Javascript
如何防止INPUT按回车自动提交表单FORM
2016/12/06 Javascript
微信小程序实现缓存根据不同的id来进行设置和读取缓存
2017/06/12 Javascript
jQuery Position方法使用和兼容性
2017/08/23 jQuery
jQuery实现的淡入淡出与滑入滑出效果示例
2018/04/18 jQuery
在vue中实现点击选择框阻止弹出层消失的方法
2018/09/15 Javascript
浅谈在vue中使用mint-ui swipe遇到的问题
2018/09/27 Javascript
vue项目前端埋点的实现
2019/03/06 Javascript
微信小程序 setData 对 data数据影响问题
2019/04/18 Javascript
全面解读Python Web开发框架Django
2014/06/30 Python
python模拟登录并且保持cookie的方法详解
2017/04/04 Python
Django安装配置mysql的方法步骤
2018/10/15 Python
详解Python是如何实现issubclass的
2019/07/24 Python
利用python进行文件操作
2020/12/04 Python
纯CSS3打造动感漂亮时尚的扇形菜单
2014/03/18 HTML / CSS
给老师的检讨书
2014/02/11 职场文书
旅行社各个岗位职责
2014/03/15 职场文书
计划生育工作汇报
2014/10/28 职场文书
幼儿教师辞职信
2015/02/27 职场文书
社团招新宣传语
2015/07/13 职场文书
干货:如何写好观后感 !
2019/05/21 职场文书
MySQL主从复制断开的常用修复方法
2021/04/07 MySQL
SQL Server数据库备份和恢复数据库的全过程
2022/06/14 SQL Server