Ver código fonte

Tree组件增加设置默认顶级ID功能

jqh 4 anos atrás
pai
commit
0d3d7182a7
3 arquivos alterados com 36 adições e 10 exclusões
  1. 8 1
      src/Form/Field.php
  2. 10 1
      src/Form/Field/Tree.php
  3. 18 8
      src/Grid/Displayers/DialogTree.php

+ 8 - 1
src/Form/Field.php

@@ -12,6 +12,7 @@ use Illuminate\Contracts\Support\Arrayable;
 use Illuminate\Contracts\Support\Renderable;
 use Illuminate\Support\Arr;
 use Illuminate\Support\Fluent;
+use Illuminate\Support\Str;
 use Illuminate\Support\Traits\Macroable;
 
 /**
@@ -335,7 +336,13 @@ class Field implements Renderable
             $value = [];
 
             foreach ($this->column as $key => $column) {
-                $value[$key] = Arr::get($data, $this->normalizeColumn($column));
+                $column = $this->normalizeColumn($column);
+
+                if (Arr::has($data, $column)) {
+                    $value[$key] = Arr::get($data, $column);
+                } else {
+                    $value[$key] = Arr::get($data, Str::snake($column));
+                }
             }
 
             return $value;

+ 10 - 1
src/Form/Field/Tree.php

@@ -46,6 +46,8 @@ class Tree extends Field
 
     protected $readOnly = false;
 
+    protected $rootParentId = 0;
+
     /**
      * @param array|Arrayable|\Closure $data exp:
      *                                       {
@@ -82,6 +84,13 @@ class Tree extends Field
         return $this;
     }
 
+    public function rootParentId($id)
+    {
+        $this->rootParentId = $id;
+
+        return $this;
+    }
+
     /**
      * {@inheritDoc}
      */
@@ -139,7 +148,7 @@ class Tree extends Field
             }
 
             $parentId = $v[$parentColumn] ?? '#';
-            if (empty($parentId)) {
+            if (empty($parentId) || $parentId == $this->rootParentId) {
                 $parentId = '#';
             } else {
                 $parentIds[] = $parentId;

+ 18 - 8
src/Grid/Displayers/DialogTree.php

@@ -44,6 +44,8 @@ class DialogTree extends AbstractDisplayer
 
     protected $checkAll;
 
+    protected $rootParentId = 0;
+
     /**
      * @param array $data exp:
      *                    {
@@ -67,6 +69,13 @@ class DialogTree extends AbstractDisplayer
         return $this;
     }
 
+    public function rootParentId($id)
+    {
+        $this->rootParentId = $id;
+
+        return $this;
+    }
+
     public function url(string $source)
     {
         $this->url = admin_url($source);
@@ -147,14 +156,15 @@ class DialogTree extends AbstractDisplayer
         }
 
         return Admin::view('admin::grid.displayer.dialogtree', [
-            'value'       => $this->format($this->value),
-            'nodes'       => $this->nodes,
-            'title'       => $this->title ?: $this->column->getLabel(),
-            'options'     => $this->options,
-            'area'        => $this->area,
-            'columnNames' => $this->columnNames,
-            'url'         => $this->url,
-            'checkAll'    => $this->checkAll,
+            'value'        => $this->format($this->value),
+            'nodes'        => $this->nodes,
+            'title'        => $this->title ?: $this->column->getLabel(),
+            'options'      => $this->options,
+            'area'         => $this->area,
+            'columnNames'  => $this->columnNames,
+            'url'          => $this->url,
+            'checkAll'     => $this->checkAll,
+            'rootParentId' => $this->rootParentId,
         ]);
     }