您好,登錄后才能下訂單哦!
這期內容當中小編將會給大家帶來有關如何在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.'')" 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" 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中利用html:list標簽對參數進行傳遞了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。