php获取地址栏参数list,thinkphp中html:list标签传递多个参数实例

本文实例讲述了关于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 = "n";

$parseStr  .= '

$parseStr  .= '

';

$parseStr  .= '

';

//列表需要显示的字段

$fields = array();

foreach($show as $val) {

$fields[] = explode(':',$val);

}

if(!empty($checkbox) && 'true'==strtolower($checkbox)) {//如果指定需要显示checkbox列

$parseStr .='

';

}

if(!empty($key)) {

$parseStr .= '

No';

}

foreach($fields as $field) {//显示指定的字段

$property = explode('|',$field[0]);

$showname = explode('|',$field[1]);

if(isset($showname[1])) {

$parseStr .= '

';

}else {

$parseStr .= '

';

}

$showname[2] = isset($showname[2])?$showname[2]:$showname[0];

if($sort) {

                $parseStr .= ''.$showname[0].'

';

}else{

$parseStr .= $showname[0].'';

}

}

if(!empty($action)) {//如果指定显示操作功能列

$parseStr .= '

操作';

}

$parseStr .= '

';

$parseStr .= '

if(!empty($checkbox)) {

$parseStr .= 'οnmοuseοver="over(event)" οnmοuseοut="out(event)" οnclick="change(event)" ';

}

$parseStr .= '>';

if(!empty($checkbox)) {//如果需要显示checkbox 则在每行开头显示checkbox

$parseStr .= '

';

}

if(!empty($key)) {

$parseStr .= '

{$i}';

}

foreach($fields as $field) {

//显示定义的列表字段

$parseStr   .=  '

';

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 .= '';

}else{

$parseStr .= '';

}

}else {

//如果没有指定默认传编号值

$parseStr .= '';

}

}

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 .= '';

}

$parseStr .= '

';

}

if(!empty($action)) {//显示功能操作

if(!empty($actionlist[0])) {//显示指定的功能项

$parseStr .= '

';

foreach($actionlist as $val) {

//应用 javascript

if(strpos($val,':')) {

$a = explode(':',$val);

if(count($a)>2) {

$parseStr .= ''.$a[1].' ';

}else {

$parseStr .= ''.$a[1].' ';

}

}else{

//应用 php 函数

$array = explode('|',$val);

if(count($array)>2) {

$parseStr .= ' '.$array[2].' ';

}else{

//转换 -- 为 , 传递多个参数

$val = str_replace('--',',',$val);//此处为新增内容

$parseStr .= ' {$'.$name.'.'.$val.'} ';

}

}

}

$parseStr .= '

';

//echo $parseStr;

//exit();

}

}

$parseStr .= '

';

$parseStr .= "nn";

return $parseStr;

}

模版调用演示:

方法 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框架程序设计有所帮助。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值