当前位置:首页 > CMS教程 > Thinkphp > 列表

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 方法

注释有新增内容的代码部分是新增加的

主要通过 -- 分割多个参数(会自动替换为,)代码如下:

  1. public function _list($attr) 
  2. { 
  3.         $tag        = $this->parseXmlAttr($attr,'list'); 
  4.         $id         = $tag['id'];                       //表格ID 
  5.         $datasource = $tag['datasource'];               //列表显示的数据源VoList名称 
  6.         $pk         = emptyempty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id 
  7.         $style      = $tag['style'];                    //样式名 
  8.         $name       = !emptyempty($tag['name'])?$tag['name']:'vo';                 //Vo对象名 
  9.         $action     = $tag['action']=='true'?true:false;                   //是否显示功能操作 
  10.         $key         =  !emptyempty($tag['key'])?true:false; 
  11.         $sort      = $tag['sort']=='false'?false:true; 
  12.         $checkbox   = $tag['checkbox'];                 //是否显示Checkbox 
  13.         if(isset($tag['actionlist'])) { 
  14.             $actionlist = explode(',',trim($tag['actionlist']));    //指定功能列表 
  15.         } 
  16.         if(substr($tag['show'],0,1)=='$') { 
  17.             $show   = $this->tpl->get(substr($tag['show'],1)); 
  18.         }else { 
  19.             $show   = $tag['show']; 
  20.         } 
  21.         $show       = explode(',',$show);                //列表显示字段列表 
  22.         //计算表格的列数 
  23.         $colNum     = count($show); 
  24.         if(!emptyempty($checkbox))   $colNum++; 
  25.         if(!emptyempty($action))     $colNum++; 
  26.         if(!emptyempty($key))  $colNum++; 
  27.         //显示开始 
  28.   $parseStr = "<!-- Think 系统列表组件开始 -->n"; 
  29.         $parseStr  .= '<table id="'.$id.'" class="'.$style.'" cellpadding=0 cellspacing=0 >'; 
  30.         $parseStr  .= '<tr><td height="5" colspan="'.$colNum.'" class="topTd" ></td></tr>'; 
  31.         $parseStr  .= '<tr class="row" >'; 
  32.         //列表需要显示的字段 
  33.         $fields = array(); 
  34.         foreach($show as $val) { 
  35.          $fields[] = explode(':',$val); 
  36.         } 
  37.         if(!emptyempty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列 
  38.             $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(''.$id.'')"></th>'; 
  39.         } 
  40.         if(!emptyempty($key)) { 
  41.             $parseStr .= '<th width="12">No</th>'; 
  42.         } 
  43.         foreach($fields as $field) {//显示指定的字段 
  44.             $property = explode('|',$field[0]); 
  45.             $showname = explode('|',$field[1]); 
  46.             if(isset($showname[1])) { 
  47.                 $parseStr .= '<th width="'.$showname[1].'">'; 
  48.             }else { 
  49.                 $parseStr .= '<th>'; 
  50.             } 
  51.             $showname[2] = isset($showname[2])?$showname[2]:$showname[0]; 
  52.             if($sort) { 
  53.                 $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>'; 
  54.             }else{ 
  55.                 $parseStr .= $showname[0].'</th>'; 
  56.             } 
  57.         } 
  58.         if(!emptyempty($action)) {//如果指定显示操作功能列 
  59.             $parseStr .= '<th >操作</th>'; 
  60.         } 
  61.         $parseStr .= '</tr>'; 
  62.         $parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" '; //支持鼠标移动单元行颜色变化 具体方法在js中定义 
  63.         if(!emptyempty($checkbox)) { 
  64.             $parseStr .= 'onmouseover="over(event)" onmouseout="out(event)" onclick="change(event)" '; 
  65.         } 
  66.         $parseStr .= '>'; 
  67.         if(!emptyempty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox 
  68.             $parseStr .= '<td><input type="checkbox" name="key" value="{$'.$name.'.'.$pk.'}"></td>'; 
  69.         } 
  70.         if(!emptyempty($key)) { 
  71.             $parseStr .= '<td>{$i}</td>'; 
  72.         } 
  73.         foreach($fields as $field) { 
  74.             //显示定义的列表字段 
  75.             $parseStr   .=  '<td>'; 
  76.             if(!emptyempty($field[2])) { 
  77.                 // 支持列表字段链接功能 具体方法由JS函数实现 
  78.                 $href = explode('|',$field[2]); 
  79.                 if(count($href)>1) { 
  80.                     //指定链接传的字段值 
  81.                     // 支持多个字段传递 
  82.                     $array = explode('^',$href[1]); 
  83.                     if(count($array)>1) { 
  84.                         foreach ($array as $a){ 
  85.                             $temp[] =  ''{$'.$name.'.'.$a.'|addslashes}''; 
  86.                         } 
  87.                         $parseStr .= '<a xhref="javascript:'.$href[0].'('.implode(',',$temp).')">'; 
  88.                     }else{ 
  89.                         $parseStr .= '<a xhref="javascript:'.$href[0].'('{$'.$name.'.'.$href[1].'|addslashes}')">'; 
  90.                     } 
  91.                 }else { 
  92.                     //如果没有指定默认传编号值 
  93.                     $parseStr .= '<a xhref="javascript:'.$field[2].'('{$'.$name.'.'.$pk.'|addslashes}')">'; 
  94.                 } 
  95.             } 
  96.             if(strpos($field[0],'^')) { 
  97.                 $property = explode('^',$field[0]); 
  98.                 foreach ($property as $p){ 
  99.                     $unit = explode('|',$p); 
  100.                     if(count($unit)>1) { 
  101.                         $parseStr .= '{$'.$name.'.'.$unit[0].'|'.$unit[1].'} '; 
  102.                     }else { 
  103.                         $parseStr .= '{$'.$name.'.'.$p.'} '; 
  104.                     } 
  105.                 } 
  106.             }else{ 
  107.                 $property = explode('|',$field[0]); 
  108.                 if(count($property)>1) { 
  109.                     //转换 -- 为 , 传递多个参数 
  110.                     $property[1] = str_replace('--',',',$property[1]);//此处为新增内容 
  111.                     $parseStr .= '{$'.$name.'.'.$property[0].'|'.$property[1].'}'; 
  112.                 }else { 
  113.                     $parseStr .= '{$'.$name.'.'.$field[0].'}'; 
  114.                 } 
  115.             } 
  116.             if(!emptyempty($field[2])) { 
  117.                 $parseStr .= '</a>'; 
  118.             } 
  119.             $parseStr .= '</td>'; 
  120.         } 
  121.         if(!emptyempty($action)) {//显示功能操作 
  122.             if(!emptyempty($actionlist[0])) {//显示指定的功能项 
  123.                 $parseStr .= '<td>'; 
  124.                 foreach($actionlist as $val) { 
  125.                      //应用 javascript 
  126.      if(strpos($val,':')) { 
  127.       $a = explode(':',$val); 
  128.       if(count($a)>2) { 
  129.                             $parseStr .= '<a xhref="javascript:'.$a[0].'('{$'.$name.'.'.$a[2].'}')">'.$a[1].'</a>&nbsp;'; 
  130.       }else { 
  131.        $parseStr .= '<a xhref="javascript:'.$a[0].'('{$'.$name.'.'.$pk.'}')">'.$a[1].'</a>&nbsp;'; 
  132.       } 
  133.      }else{ 
  134.                         //应用 php 函数 
  135.       $array = explode('|',$val); 
  136.       if(count($array)>2) { 
  137.        $parseStr .= ' <a xhref="javascript:'.$array[1].'('{$'.$name.'.'.$array[0].'}')">'.$array[2].'</a>&nbsp;'; 
  138.       }else{ 
  139.                             //转换 -- 为 , 传递多个参数 
  140.                             $val = str_replace('--',',',$val);//此处为新增内容 
  141.        $parseStr .= ' {$'.$name.'.'.$val.'}&nbsp;'; 
  142.       } //www.phpfensi.com 
  143.      } 
  144.                 } 
  145.                 $parseStr .= '</td>'; 
  146.                 //echo $parseStr; 
  147.                 //exit(); 
  148.             } 
  149.         } 
  150.         $parseStr .= '</tr></volist><tr><td height="5" colspan="'.$colNum.'" class="bottomTd"></td></tr></table>'; 
  151.         $parseStr .= "n<!-- Think 系统列表组件结束 -->n"; 
  152.         return $parseStr; 
  153. } 

模版调用演示:

  1. <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标签

分享到: