thinkphp中html:list标签传递多个参数实例
发布:smiling 来源: PHP粉丝网 添加日期:2021-04-19 11:37:48 浏览: 评论:0
这篇文章主要介绍了thinkphp中html:list标签传递多个参数的解决方法,在处理参数传递的情况非常具有实用价值,需要的朋友可以参考下
本文实例讲述了关于thinkphp中html:list标签传多个参数问题解决办法,分享给大家供大家参考。具体分析如下:
此改动 针对thinkphp 2.0 版本有效,thinkphp 3.0 版本 未测试.
主要修改这个文件 /Thinkphp/Lib/Think/Template/Taglib/TabLibHtml.class.php 的 _list 方法
注释有新增内容的代码部分是新增加的
主要通过 -- 分割多个参数(会自动替换为,)代码如下:
- public function _list($attr)
- {
- $tag = $this->parseXmlAttr($attr,'list');
- $id = $tag['id']; //表格ID
- $datasource = $tag['datasource']; //列表显示的数据源VoList名称
- $pk = emptyempty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id
- $style = $tag['style']; //样式名
- $name = !emptyempty($tag['name'])?$tag['name']:'vo'; //Vo对象名
- $action = $tag['action']=='true'?true:false; //是否显示功能操作
- $key = !emptyempty($tag['key'])?true:false;
- $sort = $tag['sort']=='false'?false:true;
- $checkbox = $tag['checkbox']; //是否显示Checkbox
- if(isset($tag['actionlist'])) {
- $actionlist = explode(',',trim($tag['actionlist'])); //指定功能列表
- }
- if(substr($tag['show'],0,1)=='$') {
- $show = $this->tpl->get(substr($tag['show'],1));
- }else {
- $show = $tag['show'];
- }
- $show = explode(',',$show); //列表显示字段列表
- //计算表格的列数
- $colNum = count($show);
- if(!emptyempty($checkbox)) $colNum++;
- if(!emptyempty($action)) $colNum++;
- if(!emptyempty($key)) $colNum++;
- //显示开始
- $parseStr = "<!-- Think 系统列表组件开始 -->n";
- $parseStr .= '<table id="'.$id.'" class="'.$style.'" cellpadding=0 cellspacing=0 >';
- $parseStr .= '<tr><td height="5" colspan="'.$colNum.'" class="topTd" ></td></tr>';
- $parseStr .= '<tr class="row" >';
- //列表需要显示的字段
- $fields = array();
- foreach($show as $val) {
- $fields[] = explode(':',$val);
- }
- if(!emptyempty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列
- $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(''.$id.'')"></th>';
- }
- if(!emptyempty($key)) {
- $parseStr .= '<th width="12">No</th>';
- }
- foreach($fields as $field) {//显示指定的字段
- $property = explode('|',$field[0]);
- $showname = explode('|',$field[1]);
- if(isset($showname[1])) {
- $parseStr .= '<th width="'.$showname[1].'">';
- }else {
- $parseStr .= '<th>';
- }
- $showname[2] = isset($showname[2])?$showname[2]:$showname[0];
- if($sort) {
- $parseStr .= '<a xhref="javascript:sortBy(''.$property[0].'','{$sort}',''.ACTION_NAME.'')" title="按照'.$showname[2].'{$sortType} ">'.$showname[0].'<eq name="order" value="'.$property[0].'" ><img xsrc="/Public/images/{$sortImg}.gif" width="12" height="17" border="0" align="absmiddle"></eq></a></th>';
- }else{
- $parseStr .= $showname[0].'</th>';
- }
- }
- if(!emptyempty($action)) {//如果指定显示操作功能列
- $parseStr .= '<th >操作</th>';
- }
- $parseStr .= '</tr>';
- $parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" '; //支持鼠标移动单元行颜色变化 具体方法在js中定义
- if(!emptyempty($checkbox)) {
- $parseStr .= 'onmouseover="over(event)" onmouseout="out(event)" onclick="change(event)" ';
- }
- $parseStr .= '>';
- if(!emptyempty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox
- $parseStr .= '<td><input type="checkbox" name="key" value="{$'.$name.'.'.$pk.'}"></td>';
- }
- if(!emptyempty($key)) {
- $parseStr .= '<td>{$i}</td>';
- }
- foreach($fields as $field) {
- //显示定义的列表字段
- $parseStr .= '<td>';
- if(!emptyempty($field[2])) {
- // 支持列表字段链接功能 具体方法由JS函数实现
- $href = explode('|',$field[2]);
- if(count($href)>1) {
- //指定链接传的字段值
- // 支持多个字段传递
- $array = explode('^',$href[1]);
- if(count($array)>1) {
- foreach ($array as $a){
- $temp[] = ''{$'.$name.'.'.$a.'|addslashes}'';
- }
- $parseStr .= '<a xhref="javascript:'.$href[0].'('.implode(',',$temp).')">';
- }else{
- $parseStr .= '<a xhref="javascript:'.$href[0].'('{$'.$name.'.'.$href[1].'|addslashes}')">';
- }
- }else {
- //如果没有指定默认传编号值
- $parseStr .= '<a xhref="javascript:'.$field[2].'('{$'.$name.'.'.$pk.'|addslashes}')">';
- }
- }
- if(strpos($field[0],'^')) {
- $property = explode('^',$field[0]);
- foreach ($property as $p){
- $unit = explode('|',$p);
- if(count($unit)>1) {
- $parseStr .= '{$'.$name.'.'.$unit[0].'|'.$unit[1].'} ';
- }else {
- $parseStr .= '{$'.$name.'.'.$p.'} ';
- }
- }
- }else{
- $property = explode('|',$field[0]);
- if(count($property)>1) {
- //转换 -- 为 , 传递多个参数
- $property[1] = str_replace('--',',',$property[1]);//此处为新增内容
- $parseStr .= '{$'.$name.'.'.$property[0].'|'.$property[1].'}';
- }else {
- $parseStr .= '{$'.$name.'.'.$field[0].'}';
- }
- }
- if(!emptyempty($field[2])) {
- $parseStr .= '</a>';
- }
- $parseStr .= '</td>';
- }
- if(!emptyempty($action)) {//显示功能操作
- if(!emptyempty($actionlist[0])) {//显示指定的功能项
- $parseStr .= '<td>';
- foreach($actionlist as $val) {
- //应用 javascript
- if(strpos($val,':')) {
- $a = explode(':',$val);
- if(count($a)>2) {
- $parseStr .= '<a xhref="javascript:'.$a[0].'('{$'.$name.'.'.$a[2].'}')">'.$a[1].'</a> ';
- }else {
- $parseStr .= '<a xhref="javascript:'.$a[0].'('{$'.$name.'.'.$pk.'}')">'.$a[1].'</a> ';
- }
- }else{
- //应用 php 函数
- $array = explode('|',$val);
- if(count($array)>2) {
- $parseStr .= ' <a xhref="javascript:'.$array[1].'('{$'.$name.'.'.$array[0].'}')">'.$array[2].'</a> ';
- }else{
- //转换 -- 为 , 传递多个参数
- $val = str_replace('--',',',$val);//此处为新增内容
- $parseStr .= ' {$'.$name.'.'.$val.'} ';
- } //www.phpfensi.com
- }
- }
- $parseStr .= '</td>';
- //echo $parseStr;
- //exit();
- }
- }
- $parseStr .= '</tr></volist><tr><td height="5" colspan="'.$colNum.'" class="bottomTd"></td></tr></table>';
- $parseStr .= "n<!-- Think 系统列表组件结束 -->n";
- return $parseStr;
- }
模版调用演示:
- <html:list id="checkList" name="user" style="list" checkbox="true" action="true" datasource="list" show="id:编号,task_title:任务标题:edit,task_type|getTaskType:任务类型,task_category|getTaskCategory=$user['exe_user']--$user['id']:所属栏目,hope_time|toDate='Y-m-d H#i':期望完成时间,process_rate|printRate:当前进度,exe_user|getUserName:处理人,status|getTaskStatus:状态" actionlist="status|printAccept=$user['exe_user']--$user['id'],task_track:跟踪" />
方法 getTaskCategory 传递了3个参数 顺序是:
$user['task_category']
$user['exe_user']
$user['id']
方法 printAccept 传递了3个参数 顺序是:
$user['status']
$user['exe_user']
$user['id']
其中:
task_category|getTaskCategory=$user['exe_user']--$user['id']:
与:
status|printAccept=$user['exe_user']--$user['id'],task_track:跟踪
为 传递多个参数的演示
希望本文所述对大家的ThinkPHP框架程序设计有所帮助。
Tags: list标签
相关文章
- ·Thinkphp中的volist标签用法简介(2021-02-21)
- ·Thinkphp的volist标签嵌套循环使用教程(2021-03-17)
- ·Thinkphp中volist标签mod控制一定记录的换行BUG解决方法(2021-04-23)
- ·ThinkPHP模板循环输出Volist标签用法实例详解(2021-07-21)
- ·详解thinkphp中的volist标签(2021-08-30)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)