新增 TextAd 角色 動作異常 20250708

This commit is contained in:
allen.yan 2025-07-08 16:09:58 +08:00
parent 9f0b6741c2
commit e3f9e54a4f
4 changed files with 36 additions and 5 deletions

View File

@ -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) {

View File

@ -29,6 +29,20 @@
option-value="value"
:options="$rolesOptions->map(fn($p) => ['value' => $p->id, 'label' => $p->name])->toArray()"
/>
@if (!$userId)
<x-wireui:input
label="{{ __('users.password') }}"
wire:model.defer="fields.password"
type="password"
required
/>
<x-wireui:input
label="{{ __('users.password_confirmation') }}"
wire:model.defer="fields.password_confirmation"
type="password"
required
/>
@endif
</div>
<x-slot name="footer">

View File

@ -62,7 +62,12 @@ new #[Layout('layouts.guest')] class extends Component
</label>
</div>
<div class="flex items-center justify-end mt-4">
<div class="flex items-center justify-end mt-4 space-x-4">
@if (Route::has('register'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('register') }}" wire:navigate>
註冊
</a>
@endif
@if (Route::has('password.request'))
<a class="underline text-sm text-gray-600 hover:text-gray-900 rounded-md focus:outline-none focus:ring-2 focus:ring-offset-2 focus:ring-indigo-500" href="{{ route('password.request') }}" wire:navigate>
{{ __('Forgot your password?') }}

View File

@ -12,6 +12,7 @@ new #[Layout('layouts.guest')] class extends Component
{
public string $name = '';
public string $email = '';
public string $phone = '';
public string $password = '';
public string $password_confirmation = '';