目录
一、环境二、讲解1、需要修改的地方
三、代码1、配置的值(可变的)2、PHP动态处理每一列数据3、动态追加layui表格的列1、先处理下配置$config的格式2、已经处理好了值,把值传到页面,页面处理$result1)、把值传到页面2)、页面拼接cols字段
四、相关博文
一、环境
操作系统 Win10Layui版本 2.4.5 查看Layui版本:alert(layui.v);PHP版本 7.1.33
二、讲解
1、需要修改的地方
1、需要PHP动态处理每一列的数据2、需要动态拼接表格的列,即 table.render 中 cols字段
把配置的值处理成Layui可以处理的格式,通过模板引擎传到页面,Js处理拼接table.render的cols字段
三、代码
1、配置的值(可变的)
比如配置的值如下
$config = [
['name' => '类型1', 'value' => 1],
['name' => '类型2', 'value' => 2],
['name' => '类型3', 'value' => 3],
];
2、PHP动态处理每一列数据
我们自定义每一列的类型值为type_1,type_2,...,type_n,则PHP代码如下:
public function test(){
$config = [
['name' => '类型1', 'value' => 1],
['name' => '类型2', 'value' => 2],
['name' => '类型3', 'value' => 3],
];
$list = [
['name' => '姓名1', 'age' => 1],
['name' => '姓名2', 'age' => 2],
['name' => '姓名3', 'age' => 3]
];
foreach ($list as &$value){
foreach ($config as $v){
$type = $v['value'];
$value["type_{$type}"] = 0;
}
}
var_export($list);
}
打印的值如下
array (
0 =>
array (
'name' => '姓名1',
'age' => 1,
'type_1' => 0,
'type_2' => 0,
'type_3' => 0,
),
1 =>
array (
'name' => '姓名2',
'age' => 2,
'type_1' => 0,
'type_2' => 0,
'type_3' => 0,
),
2 =>
array (
'name' => '姓名3',
'age' => 3,
'type_1' => 0,
'type_2' => 0,
'type_3' => 0,
),
)
3、动态追加layui表格的列
1、先处理下配置$config的格式
代码如下
public function test(){
$config = [
['name' => '类型1', 'value' => 1],
['name' => '类型2', 'value' => 2],
['name' => '类型3', 'value' => 3],
];
$result = [];
$config = array_column($config, 'name', 'value');
foreach ($config as $k => $v){
$typeName = 'type_' . $k;
$result[] = [
'id' => $k,
'field' => $typeName,
'title'=> $v
];
}
var_export($result);
}
打印的值如下
array (
0 =>
array (
'id' => 1,
'field' => 'type_1',
'title' => '类型1',
),
1 =>
array (
'id' => 2,
'field' => 'type_2',
'title' => '类型2',
),
2 =>
array (
'id' => 3,
'field' => 'type_3',
'title' => '类型3',
),
)
2、已经处理好了值,把值传到页面,页面处理$result
1)、把值传到页面
$this->assign('result', $result);
2)、页面拼接cols字段
let result
= {:json_encode($result
)};
let cols
= [
{field
: 'name', title
: '姓名'}
,{field
: 'age', title
: '年龄'}
];
let length
= result
.length
;
for(let i
=0; i
<length
; i
++){
cols
.push({field
: result
[i
]['field'], title
: result
[i
]['title']});
}
let tableObject
= table
.render({
elem
: '#id'
,url
: 'url'
,cols
: [cols
]
,text
: {
none
: '暂无数据'
}
});
四、相关博文
如果需要知道怎么动态加载表格汇总数据,请参考这一篇:Layer表格汇总(所有)数据根据配置动态显示