《PHP編程:thinkphp中html:list標簽傳遞多個參數實例》要點:
本文介紹了PHP編程:thinkphp中html:list標簽傳遞多個參數實例,希望對您有用。如果有疑問,可以聯系我們。
PHP學習本文實例講述了關于thinkphp中html:list標簽傳多個參數問題解決方法,分享給大家供大家參考.具體分析如下:
PHP學習此改動 針對thinkphp 2.0 版本有效,thinkphp 3.0 版本 未測試.
主要修改這個文件 /Thinkphp/Lib/Think/Template/Taglib/TabLibHtml.class.php 的 _list 辦法
PHP學習注釋有新增內容的代碼部分是新增加的
主要通過 -- 分割多個參數(會自動替換為,)
代碼如下:
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="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 .= 'onmou搜索引擎優化ver="over(event)" onmou搜索引擎優化ut="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="'.$href[0].'('.implode(',',$temp).')">';
??????????????????? }else{
??????????????????????? $parseStr .= '<a xhref="'.$href[0].'('{$'.$name.'.'.$href[1].'|addslashes}')">';
??????????????????? }
??????????????? }else {
??????????????????? //如果沒有指定默認傳編號值
??????????????????? $parseStr .= '<a xhref="'.$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="'.$a[0].'('{$'.$name.'.'.$a[2].'}')">'.$a[1].'</a>?';
????? }else {
?????? $parseStr .= '<a xhref="'.$a[0].'('{$'.$name.'.'.$pk.'}')">'.$a[1].'</a>?';
????? }
???? }else{
??????????????????????? //應用 php 函數
????? $array = explode('|',$val);
????? if(count($array)>2) {
?????? $parseStr .= ' <a xhref="'.$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;
}
PHP學習模版調用演示:
代碼如下:
<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:跟蹤" />
PHP學習辦法 getTaskCategory 傳遞了3個參數 順序是:
$user['task_category']
$user['exe_user']
$user['id']
PHP學習辦法 printAccept 傳遞了3個參數 順序是:
$user['status']
$user['exe_user']
$user['id']
PHP學習其中:
代碼如下:
task_category|getTaskCategory=$user['exe_user']--$user['id']:
與
代碼如下:
status|printAccept=$user['exe_user']--$user['id'],task_track:跟蹤
為 傳遞多個參數的演示
PHP學習希望本文所述對大家的ThinkPHP框架程序設計有所贊助.
維易PHP培訓學院每天發布《PHP編程:thinkphp中html:list標簽傳遞多個參數實例》等實戰技能,PHP、MYSQL、LINUX、APP、JS,CSS全面培養人才。
轉載請注明本頁網址:
http://www.snjht.com/jiaocheng/14392.html