1、Table数据表中的searchList如何动态渲染?

官方解释:searchList,用于渲染列表的数据,支持的格式有JSON Array、JSON Object、$.getJSON、Function。

方法一:
1、控制器中模型中定义固定值在控制器中使用$this->assignconfig('demoSearchLists',搜索项数组或json格式)
2、在js中,使用 searchList: Config.demoSearchLists

方法二:
1、在js中,使用 searchList:$.getJSON("xxx/xxx") ,用ajax请求搜索项数据;
2、控制器中定义方法,返回json数据,注意权限设置;

2、Table数据表的字段,在控制器中找不到对应值,如何改变搜索的字段名称?

1、在base控制器中添加如下方法。

/*
* 修改筛选请求字段名称
* @param String $old 请求的字段名称
* @param String $new 需要修改的字段名称
*/
public function changeName($fields = array())
{
    $f = json_decode($_GET['filter'], true);
    $res = [];
    foreach($fields as $old => $new){
        // @符屏蔽错误,偷懒没写验证
        @$s = $f[$old];
        if ($s != '') {
            unset($f[$old]);
            $f[$new] = $s;
            $_GET['filter'] = json_encode($f);
        }
    }

    $res["filter"] = json_encode($f);

    $f = json_decode($_GET['op'], true);
    foreach($fields as $old => $new){
        @$s = $f[$old];

        if ($s != '') {
            unset($f[$old]);
            $f[$new] = $s;
            $_GET['op'] = json_encode($f);
        }
    }
    
    $res["op"] = json_encode($f);
    $this->request->get($res);
}

2、业务部分代码片段如下。


if ($this->request->request('keyField')) {
      return $this->selectpage();
}
            
// 此处将筛选请求中有争议的字段"source.name"指定为tableA中的title
$this->changeName(["source.name"=> "tableA.title"]);
            
list($where, $sort, $order, $offset, $limit) = $this->buildparams();
最后修改:2024 年 11 月 19 日
如果觉得我的文章对你有用,请随意赞赏