1. 云栖社区>
  2. PHP教程>
  3. 正文

thinkphp中html:list标签传递多个参数实例

作者:用户 来源:互联网 时间:2017-12-01 12:41:36

标签

thinkphp中html:list标签传递多个参数实例 - 摘要: 本文讲的是thinkphp中html:list标签传递多个参数实例,本文实例讲述了关于thinkphp中html:list标签传多个参数问题解决办法,分享给大家供大家参考。具体分析如下:此改动 针对thinkphp 2.0 版本有效,thinkphp 3.0 版本 未测试.主要修改这个文件 /Thinkph

本文实例讲述了关于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 = empty($tag['pk'])?'id':$tag['pk'];//主键名,默认为id$style      = $tag['style'];    //样式名$name       = !empty($tag['name'])?$tag['name']:'vo'; //Vo对象名$action     = $tag['action']=='true'?true:false;   //是否显示功能操作$key =  !empty($tag['key'])?true:false;$sort      = $tag['sort']=='false'?false:true;$checkbox   = $tag['checkbox']; //是否显示Checkboxif(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(!empty($checkbox))   $colNum++;if(!empty($action))     $colNum++;if(!empty($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(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列    $parseStr .='<th width="8"><input type="checkbox" id="check" onclick="CheckAll(''.$id.'')"></th>';}if(!empty($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(!empty($action)) {//如果指定显示操作功能列    $parseStr .= '<th >操作</th>';}$parseStr .= '</tr>';$parseStr .= '<volist name="'.$datasource.'" id="'.$name.'" ><tr class="row" '; //支持鼠标移动单元行颜色变化 具体方法在js中定义if(!empty($checkbox)) {    $parseStr .= 'onmouseover="over(event)" onmouseout="out(event)" onclick="change(event)" ';}$parseStr .= '>';if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox    $parseStr .= '<td><input type="checkbox" name="key" value="{$'.$name.'.'.$pk.'}"></td>';}if(!empty($key)) {    $parseStr .= '<td>{$i}</td>';}foreach($fields as $field) {    //显示定义的列表字段    $parseStr   .=  '<td>';    if(!empty($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(!empty($field[2])) {$parseStr .= '</a>';    }    $parseStr .= '</td>';}if(!empty($action)) {//显示功能操作    if(!empty($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.'} ';      }     }}$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框架程序设计有所帮助。

以上是云栖社区小编为您精心准备的的内容,在云栖社区的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索标签 ,以便于您获取更多的相关知识。