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();