瀏覽代碼

Merge pull request #1896 from Sparkinzy/issue-fileNumLimit-validation

fix(form\File.php): 修复多文件上传时,数量限制错误
Jiang Qinghua 3 年之前
父節點
當前提交
4b4dabfe91
共有 1 個文件被更改,包括 11 次插入10 次删除
  1. 11 10
      src/Form/Field/File.php

+ 11 - 10
src/Form/Field/File.php

@@ -64,19 +64,20 @@ class File extends Field implements UploadFieldInterface
         $value = Arr::get($input, $this->column);
         $value = array_filter(is_array($value) ? $value : explode(',', $value));
 
-        $fileLimit = $this->options['fileNumLimit'] ?? 1;
-        if ($fileLimit < count($value)) {
-            $this->form->responseValidationMessages(
-                $this->column,
-                trans('admin.uploader.max_file_limit', ['attribute' => $this->label, 'max' => $fileLimit])
-            );
-
-            return false;
-        }
-
         $rules = $attributes = [];
         $requiredIf = null;
 
+        $fileLimit = $this->options['fileNumLimit'] ?? 1;
+        if (!empty($value) && $fileLimit > 1){
+            $rules[$this->column][] = function($atribute,$value,$fail)use($fileLimit){
+                $value = array_filter(is_array($value) ? $value : explode(',', $value));
+                if (count($value) > $fileLimit ) {
+                    $fail(trans('admin.uploader.max_file_limit', ['attribute' => $this->label, 'max' => $fileLimit]));
+                }
+            };
+            return Validator::make($input, $rules, $this->getValidationMessages(), $attributes);
+        }
+
         if (! $this->hasRule('required') && ! $requiredIf = $this->getRule('required_if*')) {
             return false;
         }