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 数字左侧自动补0
Mar 31 PHP
PHP中实现中文字符进制转换原理分析
Dec 06 PHP
php 带逗号千位符数字的处理方法
Jan 10 PHP
解析PHP处理换行符的问题 \r\n
Jun 13 PHP
解析coreseek for sphinx的使用
Jun 21 PHP
PHPThumb图片处理实例
May 03 PHP
PHP回溯法解决0-1背包问题实例分析
Mar 23 PHP
PHP递归删除多维数组中的某个值
Apr 17 PHP
php实现微信企业转账功能
Oct 02 PHP
PHP获取HTTP body内容的方法
Dec 31 PHP
strpos() 函数判断字符串中是否包含某字符串的方法
Jan 16 PHP
php7 图形用户界面GUI 开发示例
Feb 22 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数组实例总结与说明
2011/08/23 PHP
PHP弱类型的安全问题详细总结
2016/09/25 PHP
PHP 以POST方式提交XML、获取XML,解析XML详解及实例
2016/10/26 PHP
PHP以json或xml格式返回请求数据的方法
2018/05/31 PHP
XP折叠菜单&amp;仿QQ2006菜单
2006/12/16 Javascript
在IE下:float属性会影响offsetTop的取值
2006/12/22 Javascript
DOM基础教程之使用DOM控制表单
2015/01/20 Javascript
javascript图片切换综合实例(循环切换、顺序切换)
2016/01/13 Javascript
jQuery实现可拖拽的许愿墙效果【附demo源码下载】
2016/09/14 Javascript
Vue中props的使用详解
2018/06/15 Javascript
echarts同一页面中四个图表切换的js数据交互方法示例
2018/07/03 Javascript
ant design实现圈选功能
2019/12/17 Javascript
微信小程序全选多选效果实现代码解析
2020/01/21 Javascript
[17:45]DOTA2 HEROES教学视频教你分分钟做大人-军团指挥官
2014/06/11 DOTA
[04:09]显微镜下的DOTA2第十二期—NaVi美如画的团战
2014/06/23 DOTA
Python正则表达式使用经典实例
2016/06/21 Python
浅谈Python 集合(set)类型的操作——并交差
2016/06/30 Python
Python遍历目录中的所有文件的方法
2016/07/08 Python
python 安装virtualenv和virtualenvwrapper的方法
2017/01/13 Python
详解Python字典小结
2018/10/20 Python
使用python接入微信聊天机器人
2020/03/31 Python
Python在cmd上打印彩色文字实现过程详解
2019/08/07 Python
keras自定义回调函数查看训练的loss和accuracy方式
2020/05/23 Python
Python切片列表字符串如何实现切换
2020/08/06 Python
Python开发入门——迭代的基本使用
2020/09/03 Python
5分钟让你掌握css3阴影、倒影、渐变小技巧(小编推荐)
2016/08/15 HTML / CSS
六年级数学教学反思
2014/02/03 职场文书
面临毕业的毕业生自荐书范文
2014/02/05 职场文书
培训研修方案
2014/06/06 职场文书
单位介绍信格式范文
2015/05/04 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
2015中学政教处工作总结
2015/07/22 职场文书
毕业设计工作总结
2015/08/14 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
详细聊聊vue中组件的props属性
2021/11/02 Vue.js
Java版 简易五子棋小游戏
2022/05/04 Java/Android