艾依小站
  • H5视频列表页流动到中间占主屏时自动播放实现方法
  • weiphp 4.0中,数据表中的分类是点分隔的,前端显示title问题
  • weiphp 4.0 中home应用中调用插件模板写法
Eagle
分享生活工作学习中的点点滴滴!
  1. 首页
  2. onethink
  3. 正文

weiphp 4.0 中修改列表查询函,级联方式

2020年06月05日 6935点热度 0人点赞 0条评论

在thinkphp模板里我们常用, <?$value|function|function?> 有weiphp中,列表里有一个function可以定义,处理函对数据进行加工, 但是只能是一级。 多级就不行了。 所以现在改造一下。

  1. 首先在ThinkPHP/Libary/Think/Controller.clss.php这里的东西是被weiphp

2.在parseData方法中的第907行左右进行更改如下:

elseif (! empty ( $g ['function'] ) && $g ['function'] != '') {
					//第一层处理,多个函数
 					if (strpos($g ['function'] , '|') !== false) { 
						$functionArr = explode('|',$g ['function']);
						if(is_array($functionArr)){
 							foreach($functionArr as $k=>$v){
	 							//第二层,处理参分离
	 							if (strpos($v , '=') !== false) {
		 							$secondfunction = explode('=',$v);
		 							if(is_array($secondfunction)){
			 							$val = call_user_func ($secondfunction[0], $val.','.$secondfunction[1] );
			 							//php 调试工具by eagle
			 							file_put_contents('z-Controller-parseData.log',var_export($val,1)."\n\r",FILE_APPEND);
		 							}
	 							}else{
	 								$val = call_user_func ($v, $val );
	 							}
							}
 						}
                    }else{
						$val = call_user_func ( $g ['function'], $val );
					}

看准了我贴出来的是 elseif 与else这一段的。 别换错了。 我贴个图吧。

3.在对应的表 XXXTable.class.php中定义形式如下:

'qr_code' => [
					'title' => '二维码',
					'come_from' => 0,
					'width' => '',
					'is_sort' => 0,
					'name' => 'qr_code',
					'function' => 'getFieldBy=id,qr_code,qr_admin|url_img_html',
					'href' => [ ]
			],

4. 在function.php中加如下代码:

/*
 * 自定义函数,eagle
 * 添加注,Eagle
 * $value : 查找关键值
 * $key		: 目标表中的字段名
 * $fieldName	: 被检索出来的目标表中的字段名
 * $table 		: 被检索的目标表名
 * $field1		: 第二个条件,表字段名,
 * $value1 		: 第二个条件的值
 * */
function getFieldBy($value,$key,$fieldName,$table,$field1='',$value1=''){
 	if(strpos($value, ',') && $value){
		$valueStr=explode(',', $value);
		$value = $valueStr[0];
		$key   = $valueStr[1];
		$fieldName   = $valueStr[2];
		$table   = $valueStr[3];
	}
 	//判断参数是否存在。
	if($value && $key && $fieldName && $table){
		echo 1212;
 		$model = D($table);
		//修改此处,加入一个1=1 的条件。方便特殊权限不控制到。
		$map[$key] = $value;
		if(is_array($value)){
			$map[$key] =array("in",$value);
		}
		if($field1){
			//$var = "and '.$field11.'='.$value1.'";
			$map[$field1] = $value1;
		}
		$map['_string'] = "1=1";
		// 	"'.$key.'='.$value.' and 1=1 '.$var.'"
		$data = $model->where($map)->getField($fieldName);
 	} 
	return $data;
}
配个代码图片更清晰一点
1 2下一页
标签: 暂无
最后更新:2020年06月05日

eagle

保持饥渴的专注,追求最佳的品质

点赞
< 上一篇
下一篇 >

文章评论

取消回复

文章归档
  • 2020年11月
  • 2020年9月
  • 2020年6月
  • 2020年5月
  • 2020年3月
  • 2020年1月
  • 2019年11月
  • 2019年10月
  • 2019年9月
  • 2019年7月
  • 2019年5月
  • 2019年3月
  • 2019年2月
  • 2019年1月
  • 2018年11月
  • 2018年10月
  • 2018年9月
  • 2018年8月
  • 2018年5月
  • 2018年3月
  • 2018年2月
  • 2018年1月
  • 2017年12月
  • 2017年11月
  • 2017年9月
  • 2017年7月
  • 2017年6月
  • 2017年5月
  • 2017年4月
  • 2017年3月
  • 2017年2月
  • 2017年1月
  • 2016年12月
  • 2016年11月
  • 2016年8月
  • 2016年4月
分类目录
  • onethink (30)
  • php常用函数 (10)
  • 技术笔记 (3)
  • 未分类 (5)
  • 首页 (1)

COPYRIGHT © 2020 艾依小站. ALL RIGHTS RESERVED.

蒙ICP备14001377号