From e3f9e54a4fcfb0cb41d60eddf3508ad8e4837411 Mon Sep 17 00:00:00 2001 From: "allen.yan" Date: Tue, 8 Jul 2025 16:09:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20TextAd=20=E8=A7=92?= =?UTF-8?q?=E8=89=B2=20=E5=8B=95=E4=BD=9C=E7=95=B0=E5=B8=B8=2020250708?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/Livewire/Forms/UserForm.php | 19 +++++++++++++++---- .../views/livewire/forms/user-form.blade.php | 14 ++++++++++++++ .../views/livewire/pages/auth/login.blade.php | 7 ++++++- .../livewire/pages/auth/register.blade.php | 1 + 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/app/Livewire/Forms/UserForm.php b/app/Livewire/Forms/UserForm.php index 69eda30..18ad829 100644 --- a/app/Livewire/Forms/UserForm.php +++ b/app/Livewire/Forms/UserForm.php @@ -37,16 +37,18 @@ class UserForm extends Component 'birthday' => '', 'gender' => 'unset', 'status' => 0, + 'password' => '', // 新增 + 'password_confirmation' => '', // 新增 ]; protected $rules = [ 'fields.name' => 'required|string|max:255', 'fields.email' => 'required|string|email|max:255', - 'fields.phone' => 'nullable|regex:/^09\d{8}$/', + 'fields.phone' => 'required|regex:/^09\d{8}$/', 'fields.birthday' =>'nullable|date', - 'fields.gender' => 'required|in:male,female,other,unset', - 'fields.status' => 'required|integer|in:0,1,2', + 'fields.gender' => 'required', + 'fields.status' => 'required', ]; public function mount() @@ -86,7 +88,16 @@ class UserForm extends Component public function save() { - //$this->validate(); + $rules = $this->rules; + // 加入 email / phone 唯一性驗證,排除自己(編輯時) + $rules['fields.email'] .= '|unique:users,email' . ($this->userId ? ",{$this->userId}" : ''); + $rules['fields.phone'] .= '|unique:users,phone' . ($this->userId ? ",{$this->userId}" : ''); + + // 新增時才驗證密碼 + if (!$this->userId) { + $rules['fields.password'] = ['required', 'string', 'min:8', 'confirmed']; + } + $validated = $this->validate($rules); if ($this->userId) { if ($this->canEdit) { diff --git a/resources/views/livewire/forms/user-form.blade.php b/resources/views/livewire/forms/user-form.blade.php index 3b0bb63..d351e44 100644 --- a/resources/views/livewire/forms/user-form.blade.php +++ b/resources/views/livewire/forms/user-form.blade.php @@ -29,6 +29,20 @@ option-value="value" :options="$rolesOptions->map(fn($p) => ['value' => $p->id, 'label' => $p->name])->toArray()" /> + @if (!$userId) + + + @endif diff --git a/resources/views/livewire/pages/auth/login.blade.php b/resources/views/livewire/pages/auth/login.blade.php index 109c7c6..2b2cfb4 100644 --- a/resources/views/livewire/pages/auth/login.blade.php +++ b/resources/views/livewire/pages/auth/login.blade.php @@ -62,7 +62,12 @@ new #[Layout('layouts.guest')] class extends Component -