Browse Source

修复表格规格选择器存在多个0开头选项时选中功能异常问题

jqh 4 years ago
parent
commit
1f2a7eb420
3 changed files with 10 additions and 5 deletions
  1. 1 1
      resources/views/grid/selector.blade.php
  2. 6 2
      src/Grid/Tools/Selector.php
  3. 3 2
      src/Support/Helper.php

+ 1 - 1
resources/views/grid/selector.blade.php

@@ -6,7 +6,7 @@
                 <ul>
                     @foreach($selector['options'] as $value => $option)
                         @php
-                            $active = in_array($value, \Illuminate\Support\Arr::get($selected, $column, []));
+                            $active = in_array((string) $value, \Illuminate\Support\Arr::get($selected, $column, []), true);
                         @endphp
                         <li>
                             <a href="{{ $self->url($column, $value, true) }}"

+ 6 - 2
src/Grid/Tools/Selector.php

@@ -147,6 +147,10 @@ class Selector
 
         foreach ($selected as &$value) {
             $value = explode(',', $value);
+
+            foreach ($value as &$v) {
+                $v = (string) $v;
+            }
         }
 
         return $this->selected = $selected;
@@ -182,8 +186,8 @@ class Selector
             return $this->request->fullUrlWithQuery($query);
         }
 
-        if (in_array($value, $options)) {
-            Helper::deleteByValue($options, $value);
+        if (in_array((string) $value, $options, true)) {
+            Helper::deleteByValue($options, (string) $value, true);
         } else {
             if ($add) {
                 $options = [];

+ 3 - 2
src/Support/Helper.php

@@ -417,13 +417,14 @@ class Helper
      *
      * @param array $array
      * @param mixed $value
+     * @param bool $strict
      */
-    public static function deleteByValue(&$array, $value)
+    public static function deleteByValue(&$array, $value, bool $strict = false)
     {
         $value = (array) $value;
 
         foreach ($array as $index => $item) {
-            if (in_array($item, $value)) {
+            if (in_array($item, $value, $strict)) {
                 unset($array[$index]);
             }
         }