浏览代码

修复模型树行操作生成选择器重复问题

jqh 4 年之前
父节点
当前提交
4e7c74d7ac
共有 4 个文件被更改,包括 36 次插入8 次删除
  1. 7 6
      src/Actions/Action.php
  2. 1 1
      src/Grid/Filter.php
  3. 5 1
      src/Grid/RowAction.php
  4. 23 0
      src/Tree/RowAction.php

+ 7 - 6
src/Actions/Action.php

@@ -14,7 +14,8 @@ use Illuminate\Contracts\Support\Renderable;
  */
 abstract class Action implements Renderable
 {
-    use HasHtmlAttributes, HasActionHandler;
+    use HasHtmlAttributes;
+    use HasActionHandler;
 
     /**
      * @var array
@@ -59,7 +60,7 @@ abstract class Action implements Renderable
     /**
      * @var bool
      */
-    protected $usingHandler = true;
+    protected $allowHandler = true;
 
     /**
      * @var array
@@ -207,10 +208,10 @@ HTML;
     /**
      * @return void
      */
-    protected function setupHandler()
+    protected function prepareHandler()
     {
         if (
-            ! $this->usingHandler
+            ! $this->allowHandler
             || ! method_exists($this, 'handle')
         ) {
             return;
@@ -228,7 +229,7 @@ HTML;
             return '';
         }
 
-        $this->setupHandler();
+        $this->prepareHandler();
 
         $this->setupHtmlAttributes();
 
@@ -259,7 +260,7 @@ HTML;
         ];
 
         if (method_exists($this, 'href') && ($href = $this->href())) {
-            $this->usingHandler = false;
+            $this->allowHandler = false;
 
             $attributes['href'] = $href;
         }

+ 1 - 1
src/Grid/Filter.php

@@ -477,7 +477,7 @@ class Filter implements Renderable
     protected function sanitizeInputs(&$inputs)
     {
         if (! $prefix = $this->grid()->getNamePrefix()) {
-            return $inputs;
+            return;
         }
 
         $inputs = collect($inputs)->filter(function ($input, $key) use ($prefix) {

+ 5 - 1
src/Grid/RowAction.php

@@ -3,6 +3,7 @@
 namespace Dcat\Admin\Grid;
 
 use Illuminate\Support\Fluent;
+use Illuminate\Support\Str;
 
 abstract class RowAction extends GridAction
 {
@@ -83,6 +84,9 @@ abstract class RowAction extends GridAction
     }
 
     /**
+     * 生成选择器.
+     * 需要保证每个行操作的选择器都不同.
+     *
      * @param string $prefix
      * @param string $class
      *
@@ -95,7 +99,7 @@ abstract class RowAction extends GridAction
         $key = $prefix.'-'.$class.'-'.$this->getKey();
 
         if (! isset(static::$selectors[$key])) {
-            static::$selectors[$key] = uniqid($prefix);
+            static::$selectors[$key] = $prefix.Str::random(8);
         }
 
         return static::$selectors[$key];

+ 23 - 0
src/Tree/RowAction.php

@@ -3,6 +3,7 @@
 namespace Dcat\Admin\Tree;
 
 use Dcat\Admin\Actions\Action;
+use Illuminate\Support\Str;
 
 class RowAction extends Action
 {
@@ -62,4 +63,26 @@ class RowAction extends Action
     {
         $this->row = $row;
     }
+
+    /**
+     * 生成选择器.
+     * 需要保证每个行操作的选择器都不同.
+     *
+     * @param string $prefix
+     * @param string $class
+     *
+     * @return string
+     */
+    public function makeSelector($prefix, $class = null)
+    {
+        $class = $class ?: static::class;
+
+        $key = $prefix.'-'.$class.'-'.$this->getKey();
+
+        if (! isset(static::$selectors[$key])) {
+            static::$selectors[$key] = $prefix.Str::random(8);
+        }
+
+        return static::$selectors[$key];
+    }
 }