Приветствую всех!
Проблема следующая: есть компонент 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 = ?. Заранее спасибо!