user(); $form = Form::make() ->title() ->panelClassName('px-48 m:px-0') ->mode('horizontal') ->data(Arr::only($user->toArray(), ['avatar', 'name'])) ->api('put:' . admin_url('/user_setting')) // ->persistDataKeys(['avatar', 'name']) // ->resetAfterSubmit() ->body([ ImageControl::make() ->label(__('admin.admin_user.avatar')) ->name('avatar') ->receiver($this->uploadImagePath()), TextControl::make() ->label(__('admin.admin_user.name')) ->name('name') ->required(), TextControl::make() ->type('input-password') ->label(__('admin.old_password')) ->name('old_password'), TextControl::make() ->type('input-password') ->label('新密码') ->name('password') ->validations(['minLength' => 6]) ->requiredOn('!!this.old_password'), TextControl::make() ->type('input-password') ->label(__('admin.confirm_password')) ->name('confirm_password') ->validations(['minLength' => 6]) ->requiredOn('!!this.old_password'), ]); return $this->response()->success(Page::make()->body($form)); } public function saveUserSetting(): \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource { $request = request(); $request->validate([ 'old_password' => ['nullable', 'current_password:sanctum', Rule::requiredIf($request->filled(['password', 'confirm_password']))], 'password' => Rule::requiredIf($request->filled('old_password')), 'confirm_password' => [Rule::requiredIf($request->filled('old_password')), 'same:password'], ], [ 'old_password.required' => '原密码必填', 'password.required' => '新密码必填', 'confirm_password.required' => '确认密码必填', 'old_password.current_password' => __('admin.admin_user.old_password_error'), 'confirm_password.same' => __('admin.admin_user.password_confirmation'), ]); $user = $this->user(); $attributes = $request->only(['avatar', 'name']); if ($request->filled('old_password')) { $attributes['password'] = Hash::make($request->input('password')); } $user->update($attributes); return $this->response()->successMessage(__('admin.action_success')); } }