本文實例講述了關于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']; //是否顯示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(!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.'')" style="border-left-color: rgb(0, 153, 204); border-left-width: 1px; border-left-style: solid; padding: 0px 3px; margin: 3px auto 0px; width: 640px; background-color: rgb(242, 246, 251); clear: both; border-top-color: rgb(0, 153, 204); border-top-width: 1px; border-top-style: solid; border-right-color: rgb(0, 153, 204); border-right-width: 1px; border-right-style: solid;"> 復制代碼代碼如下:
<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框架程序設計有所幫助。