jqh 4 年之前
父節點
當前提交
f3ef2df817
共有 4 個文件被更改,包括 30 次插入10 次删除
  1. 14 3
      src/Form/Builder.php
  2. 13 4
      src/Form/Row.php
  3. 2 2
      src/Form/Tab.php
  4. 1 1
      tests/Controllers/UserController.php

+ 14 - 3
src/Form/Builder.php

@@ -688,9 +688,20 @@ class Builder
             $this->form->updatedAtColumn(),
         ];
 
-        $reject = function (Field $field) use (&$reservedColumns) {
-            return in_array($field->column(), $reservedColumns, true)
-                && $field instanceof Form\Field\Display;
+        $reject = function ($field) use (&$reservedColumns) {
+            if ($field instanceof Field) {
+                return in_array($field->column(), $reservedColumns, true)
+                    && $field instanceof Form\Field\Display;
+            }
+
+            if ($field instanceof Row) {
+                $fields = $field->fields()->reject(function ($item) use (&$reservedColumns) {
+                    return in_array($item['element']->column(), $reservedColumns, true)
+                        && $item['element'] instanceof Form\Field\Display;
+                });
+
+                $field->setFields($fields);
+            }
         };
 
         $this->fields = $this->fields()->reject($reject);

+ 13 - 4
src/Form/Row.php

@@ -5,6 +5,7 @@ namespace Dcat\Admin\Form;
 use Dcat\Admin\Form;
 use Dcat\Admin\Widgets\Form as WidgetForm;
 use Illuminate\Contracts\Support\Renderable;
+use Illuminate\Support\Collection;
 
 /**
  * Class Row.
@@ -81,7 +82,7 @@ class Row implements Renderable
      *
      * @var array
      */
-    protected $fields = [];
+    protected $fields;
 
     /**
      * Default field width for appended field.
@@ -99,6 +100,7 @@ class Row implements Renderable
     public function __construct(\Closure $callback, $form)
     {
         $this->callback = $callback;
+        $this->fields = collect();
 
         $this->form = $form;
 
@@ -108,13 +110,20 @@ class Row implements Renderable
     /**
      * Get fields of this row.
      *
-     * @return array
+     * @return array|Collection
      */
     public function fields()
     {
         return $this->fields;
     }
 
+    public function setFields(Collection $collection)
+    {
+        $this->fields = $collection;
+
+        return $this;
+    }
+
     /**
      * @return mixed
      */
@@ -169,10 +178,10 @@ class Row implements Renderable
 
         $field->disableHorizontal();
 
-        $this->fields[] = [
+        $this->fields->push([
             'width'   => $this->defaultFieldWidth,
             'element' => $field,
-        ];
+        ]);
 
         return $field;
     }

+ 2 - 2
src/Form/Tab.php

@@ -81,9 +81,9 @@ class Tab
         $all = $fields->toArray();
 
         foreach ($this->form->rows() as $row) {
-            $rowFields = array_map(function ($field) {
+            $rowFields = $row->fields()->map(function ($field) {
                 return $field['element'];
-            }, $row->fields());
+            });
 
             $match = false;
 

+ 1 - 1
tests/Controllers/UserController.php

@@ -121,7 +121,7 @@ class UserController extends AdminController
             $filter->equal('id');
             $filter->like('username');
             $filter->like('email');
-            $filter->like('profile.postcode');
+            $filter->equal('profile.postcode')->select('api/placard-classify');
             $filter->between('profile.start_at')->datetime();
             $filter->between('profile.end_at')->datetime();
         });