jqh 5 роки тому
батько
коміт
811a5ed967
1 змінених файлів з 14 додано та 3 видалено
  1. 14 3
      src/Grid/Exporter.php

+ 14 - 3
src/Grid/Exporter.php

@@ -3,6 +3,7 @@
 namespace Dcat\Admin\Grid;
 
 use Dcat\Admin\Grid;
+use Dcat\Admin\Grid\Exporters\ExporterInterface;
 
 class Exporter
 {
@@ -160,6 +161,10 @@ class Exporter
             return $driver->setGrid($this->grid);
         }
 
+        if ($driver && $driver instanceof ExporterInterface) {
+            return $driver;
+        }
+
         return $this->getExporter($driver);
     }
 
@@ -170,19 +175,25 @@ class Exporter
      *
      * @return Grid\Exporters\AbstractExporter
      */
-    protected function getExporter($driver): Grid\Exporters\AbstractExporter
+    protected function getExporter($driver): ExporterInterface
     {
         if (! $driver || ! array_key_exists($driver, static::$drivers)) {
             return $this->getDefaultExporter();
         }
 
-        return (new static::$drivers[$driver]())->setGrid($this->grid);
+        $driver = (new static::$drivers[$driver]());
+
+        if (method_exists($driver, 'setGrid')) {
+            $driver->setGrid($this->grid);
+        }
+
+        return $driver;
     }
 
     /**
      * Get default exporter.
      *
-     * @return Grid\Exporters\AbstractExporter
+     * @return Grid\Exporters\ExcelExporter
      */
     public function getDefaultExporter()
     {