一、環境
- 操作系統 Win10
- Layui版本 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: '暫無數據'
}
});
四、相關博文