как использовать sweetalert2 в livewire

#laravel #laravel-livewire #sweetalert2

Вопрос:

я пытаюсь использовать sweetalert2 в livewire — Вместо удаления одного сообщения будут удалены все сообщения. В чем моя проблема?

сообщение.список.лезвие

<button wire:click="deleteConfirm" type="button">delete</button>

компонент

public function deleteConfirm(){$this->emit('swal', 'are u sure?', 'warning');}

и

public function delete(){$this->post->delete();}

мой js:

 const Swal = Swal.mixin({
position: 'center',
showConfirmButton: true,
})

document.addEventListener('livewire:load', () => {
Livewire.on('swal', (message,type) => {
    Swal.fire({
        icon: type,
        text: message,
        showCancelButton: true,
    }).then((result) => {
        if (result.isConfirmed) {
          livewire.emit('delete')
        }
    })
  })
})
 

Комментарии:

1. Можете ли вы рассказать больше о своем компоненте livewire? Я хочу посмотреть, как вы загружаете данные записи, подлежащие удалению. Кроме того, что происходит, когда вы помещаете dd($this->post) в свою функцию удаления?

Ответ №1:

обычно, когда у вас есть список элементов с такими действиями, как редактирование, сведения, удаление и т.д. вы должны передать идентификатор элемента действию.

 post.list.blade

<button wire:click="deleteConfirm({{ $item->id }})" type="button">delete</button>

component

public function deleteConfirm($item_id)
{
  $this->post = Post::where('id',$item_id)->first();
  $this->emit('swal', 'are u sure?', 'warning');
} 

and

public function delete()
{
   if($this->post) {
     $this->post->delete();
     $this->post = null;
   }
}