Jiang qinghua 6 lat temu
rodzic
commit
98724b5d29

+ 6 - 8
src/Controllers/UserController.php

@@ -212,19 +212,17 @@ class UserController extends Controller
     public function form($id = null)
     {
         $roleModel = config('admin.database.roles_model');
+        $userTable = config('admin.database.users_table');
+
+        $connection = config('admin.database.connection');
 
         $form = new Form(new Administrator());
 
         $form->display('id', 'ID');
 
-        if (request()->isMethod('POST')) {
-            $userTable = config('admin.database.users_table');
-            $userNameRules = "required|unique:{$userTable}";
-        } else {
-            $userNameRules = 'required';
-        }
-
-        $form->text('username', trans('admin.username'))->rules($userNameRules);
+        $form->text('username', trans('admin.username'))
+            ->creationRules(['required', "unique:{$connection}.{$userTable}"])
+            ->updateRules(['required', "unique:{$connection}.{$userTable},username,$id"]);
         $form->text('name', trans('admin.name'))->rules('required');
         $form->image('avatar', trans('admin.avatar'));
         $form->password('password', trans('admin.password'))->rules('required|confirmed');

+ 38 - 0
src/Form/Concerns/FieldValidator.php

@@ -149,6 +149,44 @@ trait FieldValidator
         return $rules;
     }
 
+    /**
+     * Format validation rules.
+     *
+     * @param array|string $rules
+     *
+     * @return array
+     */
+    protected function formatRules($rules)
+    {
+        if (is_string($rules)) {
+            $rules = array_filter(explode('|', $rules));
+        }
+
+        return array_filter((array) $rules);
+    }
+
+
+    /**
+     * @param string|array|\Closure $input
+     * @param string|array         $original
+     *
+     * @return array|\Closure
+     */
+    protected function mergeRules($input, $original)
+    {
+        if ($input instanceof \Closure) {
+            $rules = $input;
+
+        } else {
+            if (!empty($original)) {
+                $original = $this->formatRules($original);
+            }
+            $rules = array_merge($original, $this->formatRules($input));
+        }
+
+        return $rules;
+    }
+
     /**
      * Remove a specific rule by keyword.
      *