#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;
}
}