jqh 5 年之前
父節點
當前提交
7b5f36d2d2
共有 2 個文件被更改,包括 23 次插入12 次删除
  1. 12 1
      src/Grid/Column.php
  2. 11 11
      src/Grid/Column/HasHeader.php

+ 12 - 1
src/Grid/Column.php

@@ -7,6 +7,7 @@ use Dcat\Admin\Grid;
 use Dcat\Admin\Grid\Displayers\AbstractDisplayer;
 use Dcat\Admin\Traits\HasBuilderEvents;
 use Dcat\Admin\Traits\HasDefinitions;
+use Dcat\EasyExcel\Support\Traits\Macroable;
 use Illuminate\Contracts\Support\Arrayable;
 use Illuminate\Database\Eloquent\Model;
 use Illuminate\Support\Arr;
@@ -55,7 +56,10 @@ class Column
     use HasBuilderEvents,
         HasDefinitions,
         Grid\Column\HasHeader,
-        Grid\Column\HasDisplayers;
+        Grid\Column\HasDisplayers,
+        Macroable {
+            __call as __macroCall;
+        }
 
     const SELECT_COLUMN_NAME = '__row_selector__';
 
@@ -846,6 +850,13 @@ class Column
      */
     public function __call($method, $arguments)
     {
+        if (
+            ! isset(static::$displayers[$method])
+            && static::hasMacro($method)
+        ) {
+            return $this->__macroCall($method, $arguments);
+        }
+
         return $this->resolveDisplayer($method, $arguments);
     }
 }

+ 11 - 11
src/Grid/Column/HasHeader.php

@@ -5,6 +5,7 @@ namespace Dcat\Admin\Grid\Column;
 use Dcat\Admin\Grid;
 use Dcat\Admin\Grid\Column;
 use Dcat\Admin\Grid\Model;
+use Dcat\Admin\Support\Helper;
 use Illuminate\Contracts\Support\Htmlable;
 use Illuminate\Contracts\Support\Renderable;
 
@@ -91,17 +92,16 @@ trait HasHeader
      */
     public function renderHeader()
     {
-        $headers = collect($this->headers)->map(function ($item) {
-            if ($item instanceof Renderable) {
-                return $item->render();
-            }
-
-            if ($item instanceof Htmlable) {
-                return $item->toHtml();
-            }
-
-            return (string) $item;
-        })->implode('');
+        if (! $this->headers) {
+            return '';
+        }
+        $headers = implode(
+            '',
+            array_map(
+                [Helper::class, 'render'],
+                $this->headers
+            )
+        );
 
         return "<span class='grid-column-header'>$headers</span>";
     }