Browse Source

修复数据表格column使用if方法后无法在displayer中取得原始字段值问题

Jiang qinghua 3 năm trước cách đây
mục cha
commit
181778f817
2 tập tin đã thay đổi với 32 bổ sung5 xóa
  1. 25 4
      src/Grid/Column.php
  2. 7 1
      src/Grid/Column/Condition.php

+ 25 - 4
src/Grid/Column.php

@@ -165,7 +165,7 @@ class Column
     protected $attributes = [];
 
     /**
-     * @var []Closure
+     * @var Closure[]
      */
     protected $displayCallbacks = [];
 
@@ -392,6 +392,16 @@ class Column
         return $this->original;
     }
 
+    /**
+     * @param mixed $value
+     *
+     * @return void
+     */
+    public function setOriginal($value)
+    {
+        $this->original = $value;
+    }
+
     /**
      * @return mixed
      */
@@ -400,6 +410,16 @@ class Column
         return $this->value;
     }
 
+    /**
+     * @param mixed $value
+     *
+     * @return void
+     */
+    public function setValue($value)
+    {
+        $this->value = $value;
+    }
+
     /**
      * Format label.
      *
@@ -458,6 +478,7 @@ class Column
 
     /**
      * @param  array  $callbacks
+     *
      * @return void
      */
     public function setDisplayCallbacks(array $callbacks)
@@ -539,9 +560,9 @@ class Column
                 $row['#'] = $i;
             }
 
-            $this->original = Arr::get($this->originalModel, $this->name);
+            $this->setOriginal(Arr::get($this->originalModel, $this->name));
 
-            $this->value = $value = $this->htmlEntityEncode($original = Arr::get($row, $this->name));
+            $this->setValue($value = $this->htmlEntityEncode($original = Arr::get($row, $this->name)));
 
             if ($original === null) {
                 $original = (string) $original;
@@ -557,7 +578,7 @@ class Column
                 Helper::arraySet($row, $this->name, $value);
             }
 
-            $this->value = $value ?? null;
+            $this->setValue($value ?? null);
 
             return $row;
         });

+ 7 - 1
src/Grid/Column/Condition.php

@@ -104,7 +104,13 @@ class Condition
 
     protected function copy()
     {
-        return clone $this->original;
+        $column = clone $this->original;
+
+        $column->setOriginalModel($this->column->getOriginalModel());
+        $column->setOriginal($this->column->getOriginal());
+        $column->setValue($this->column->getValue());
+
+        return $column;
     }
 
     public function is()