没有pidField的表也可以做只有一层的树形

This commit is contained in:
ichynul 2024-07-26 18:30:11 +08:00
parent 505cf15468
commit 5d2ae3263c
3 changed files with 24 additions and 2 deletions

View File

@ -426,7 +426,7 @@ form label.full-label {
} }
.panel-body.page-main { .panel-body.page-main {
padding: 15px 8px; padding: 10px 8px;
} }
.table-hover>tbody>tr.checked:hover { .table-hover>tbody>tr.checked:hover {

View File

@ -91,6 +91,13 @@ class JSTree extends Widget implements Renderable
*/ */
public function fill($treeData, $textField = 'name', $idField = 'id', $pidField = 'parent_id', $rootText = '全部') public function fill($treeData, $textField = 'name', $idField = 'id', $pidField = 'parent_id', $rootText = '全部')
{ {
if (empty($idField)) {
$idField = 'id';
}
if (empty($pidField)) {
$pidField = 'parent_id';
}
$tree = []; $tree = [];
if ($rootText == '全部') { if ($rootText == '全部') {
@ -114,6 +121,10 @@ class JSTree extends Widget implements Renderable
foreach ($treeData as $k => $li) { foreach ($treeData as $k => $li) {
if (!isset($li[$pidField])) {
$li[$pidField] = $li['pid'] ?? 0;
}
if ($li[$pidField] !== 0 && $li[$pidField] !== '') { if ($li[$pidField] !== 0 && $li[$pidField] !== '') {
continue; continue;
} }

View File

@ -110,6 +110,13 @@ class ZTree extends Widget implements Renderable
*/ */
public function fill($treeData, $textField = 'name', $idField = 'id', $pidField = 'parent_id', $rootText = '全部') public function fill($treeData, $textField = 'name', $idField = 'id', $pidField = 'parent_id', $rootText = '全部')
{ {
if (empty($idField)) {
$idField = 'id';
}
if (empty($pidField)) {
$pidField = 'parent_id';
}
$tree = []; $tree = [];
if ($rootText == '全部') { if ($rootText == '全部') {
@ -130,6 +137,10 @@ class ZTree extends Widget implements Renderable
foreach ($treeData as $li) { foreach ($treeData as $li) {
if (!isset($li[$pidField])) {
$li[$pidField] = $li['pid'] ?? 0;
}
if (empty($idField)) { if (empty($idField)) {
$idField = $li->getPk(); $idField = $li->getPk();
} }
@ -159,7 +170,7 @@ class ZTree extends Widget implements Renderable
$tree[] = [ $tree[] = [
'id' => $li[$idField], 'id' => $li[$idField],
'pId' => $li[$pidField] ?? $li['pid'], 'pId' => $li[$pidField],
'name' => str_replace($keys, $replace, $textField), 'name' => str_replace($keys, $replace, $textField),
]; ];
} else { } else {