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

本文实例讲述了关于thinkPHP中html:list标签传多个参数问题解决办法,分享给大家供大家参考。具体分析如下:

此改动 针对thinkPHP 2.0 版本有效,thinkPHP 3.0 版本 未测试. 主要修改这个文件 /ThinkPHP/Lib/Think/Template/Taglib/TabLibHtml.class.PHP 的 _list 方法

注释有新增内容代码部分是新增加的 主要通过 -- 分割多个参数(会自动替换为,)

代码如下:
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'],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 .= '显示的字段 $fields = array(); foreach($show as $val) { $fields[] = explode(':',$val); } if(!empty($checkBox) && 'true'==strtolower($checkBox)) {//如果指定需要显示checkBox列 $parseStr .=''; } if(!empty($key)) { $parseStr .= ''; }else{ $parseStr .= $showname[0].''; } } if(!empty($action)) {//如果指定显示操作功能列 $parseStr .= ''; } $parseStr .= 'Box)) {//如果需要显示checkBox 则在每行开头显示checkBox $parseStr .= 'Box" name="key" value="{$'.$name.'.'.$pk.'}">显示定义的列表字段 $parseStr .= '1) { //指定链接传的字段值 // 支持多个字段传递 $array = explode('^',$href[1]); if(count($array)>1) { foreach ($array as $a){ $temp[] = ''{$'.$name.'.'.$a.'|addslashes}''; } $parseStr .= '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($actionlist[0])) {//显示指定的功能项 $parseStr .= '2) { $parseStr .= ''; }else { $parseStr .= ''; } }else{ //应用 PHP 函数 $array = explode('|',$val); if(count($array)>2) { $parseStr .= ' '; }else{ //转换 -- 为,传递多个参数 $val = str_replace('--',$val);//此处为新增内容 $parseStr .= ' {$'.$name.'.'.$val.'}'; } } } $parseStr .= '

模版调用演示:

代码如下:

方法 getTaskCategory 传递了3个参数 顺序是: $user['task_category'] $user['exe_user'] $user['id']

方法 printAccept 传递了3个参数 顺序是: $user['status'] $user['exe_user'] $user['id']

其中:

代码如下:
代码如下:
为 传递多个参数的演示

希望本文所述对大家的ThinkPHP框架程序设计有所帮助。

相关文章

public function getapiSignature(){$access_token=S('access_token');//先查询缓存中...
前述两篇文章“使用BootStrap制作用户登录UI”和“使用BootStrapValidator来完成前端输入验证 ”已经将...
前两天自己写的一篇文章“针对BootStrap中tabs控件的美化和完善”被别的网站给转载了,这也许是值得高兴...
由于用惯了ThinkPHP之前的版本,一想到要用Session就直接用$_SESSION来存取,今天看了ThinkPHP5的手册,...
今天访问自己的网站的时候(by thinkphp),突然发现身份验证失效了,Session无法跨页,而且登陆的时候...
使用thinkphp做一个后台系统,把session中的id传给header模板 切换多个子账户的时候,发现模板传递的参...
Box" id="check" onclick="CheckAll(''.$id.'')">'; } foreach($fields as $field) {//显示指定的字段 $property = explode('|',$field[0]); $showname = explode('|',$field[1]); if(isset($showname[1])) { $parseStr .= '操作