@drnkwtr
forblitz.ru dev

Как обновить пользователя через LiveWire компонент?

Приветствую всех!

Проблема следующая: есть компонент Livewire, в котором есть функционал создания и редактирования пользователей. Однако, проблема следующая: используются правила валидации
protected $rules = [
        'user.username' => 'required|string|min:3',
        'user.email' => 'required|email',
        'user.password' => 'sometimes|required',
    ];

и при обновлении пользователя, появляется ошибка о том, что поле user.password - null. Код обновления пользователя следующий:
public function updateUserPopUp(User $user) {
        $this->popUp = true;
        $this->user = $user;
    }
    public function updateUser($id) {
        $this->user->update([
            'username' => $this->username,
            'email' => $this->email,
        ]);
        $this->closePopUp();
    }

Открытие Pop Up'a:
<button data-tooltip-target="tooltip-edit-user" wire:click="updateUserPopUp({{ $item }})" class="hover:bg-gray-400 text-gray-800 dark:text-white dark:hover:text-forblitz-dark-layout-hover-text dark:hover:bg-pink-800 dark:bg-pink-900 font-semibold py-2 px-3 rounded-full inline-flex items-center">
<i class="ri-edit-box-line"></i>
</button>


Сама форма:
@if($user->exists)
                                <form wire:submit.prevent="updateUser()">
                                    <div class="space-y-2 dark:bg-forblitz-dark-layout-color dark:text-forblitz-dark-secondary-text m-5">
                                        <label for="username" class="block mb-2 text-md font-light @error('user.username') text-red-700 dark:text-red-500 @enderror">Имя пользователя</label>
                                        <input wire:model.defer="user.username" id="username" type="text" class="@error('user.username') bg-red-50 border border-red-500 text-red-900 placeholder-red-700 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500 @enderror text-sm rounded-lg dark:bg-gray-700 block w-full p-2.5" placeholder="Введите имя пользователя..." value=" {{$user->username ?? ''}}">
                                        @error('user.username') <p class="mt-2 text-sm text-red-600 dark:text-red-500">{{ $errors->first('user.username') }}</p> @enderror
                                        <label for="email" class="block mb-2 text-md font-light @error('user.email') text-red-700 dark:text-red-500 @enderror">Email</label>
                                        <input wire:model.defer="user.email" id="email" type="text" class="@error('user.email') bg-red-50 border border-red-500 text-red-900 placeholder-red-700 dark:text-red-500 dark:placeholder-red-500 dark:border-red-500 @enderror text-sm rounded-lg dark:bg-gray-700 block w-full p-2.5" placeholder="Введите email адрес..." value=" {{$user->email ?? ''}}">
                                        @error('user.email') <p class="mt-2 text-sm text-red-600 dark:text-red-500">{{ $errors->first('user.email') }}</p> @enderror
                                    </div>
                                    <div class="bg-gray-50 dark:bg-forblitz-dark-layout-color px-4 py-3 sm:flex sm:flex-row-reverse sm:px-6">
                                        <button type="submit" class="inline-flex w-full justify-center rounded-md border border-transparent bg-green-600 px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-green-700 focus:outline-none sm:ml-3 sm:w-auto sm:text-sm">Сохранить</button>
                                        <button wire:click="closePopUp" type="button" class="mt-3 inline-flex w-full justify-center rounded-md bg-red-600 hover:bg-red-700 px-4 py-2 text-base font-medium text-white shadow-sm hover:bg-gray-50 focus:outline-none sm:mt-0 sm:ml-3 sm:w-auto sm:text-sm">Отмена</button>
                                    </div>
                                </form>
                            @endif


Как не передавать переменную user.password в обновление? Пытался передавать определенные поля валидации - безуспешно, все равно идет запрос SET password = ?. Заранее спасибо!
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы