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