سلام دوستان خسته نباشید
من میخوام موقعی که داخل پنل مدیریت مدیر خواست یک پستی رو حذف کنه یه الرت نمایش داده بشه
برای همین از سوییت الرت استفاده میکنم

تا اینجای قضیه مشکلی نیست
مشکل اینه که وقتی delete میکنم مثلا آیدی 9 رو پاک میکنم آخرین آیدی دیلیت میشه مثلا 30
در حالی که اگه از سوییت الرت استفاده نکنم آیدی درست پاک میشه .....
این کد جاوا اسکریپت 👇👇👇
jQuery(document).ready(function(){
jQuery('.ready').on('click', function(){
event.preventDefault();
const swalWithBootstrapButtons = Swal.mixin({
customClass: {
confirmButton: 'btn btn-success ml-5',
cancelButton: 'btn btn-danger'
},
buttonsStyling: false
})
swalWithBootstrapButtons.fire({
title: 'آیا میخواهید حذف کنید ؟',
text: "این تاپیک دیگر قابل برگشت نیست !",
icon: 'warning',
showCancelButton: true,
confirmButtonText: 'بلی',
cancelButtonText: 'خیر',
}).then((result) => {
if (result.isConfirmed) {
console.log()
swalWithBootstrapButtons.fire(
'پاک شد !',
'تاپیک انتخاب شده پاک شد .',
'success'
)
var delayInMilliseconds = 1000; //1 second
setTimeout(function() {
$('form').submit();
}, delayInMilliseconds)
} else if (
/* Read more about handling dismissals below */
result.dismiss === Swal.DismissReason.cancel
) {
swalWithBootstrapButtons.fire(
'پاک نشد',
'تاپیک انتخاب شده امن است :)',
'error'
)
}
})
});
});
//----------------------------------
اینم فرم 👇👇
<form class="form" action="{{route('messages.destroy',['message' => $message->id])}}"
method="post">
@csrf
@method('delete')
<button style="color: white" class="btn ready btn-danger">حذف</button>
</form>
فانکشن destroy 👇👇👇
public function destroy(Message $message)
{
$message->delete();
return back();
}
چه کنم ؟
@shahriar
در قسمت زیر
setTimeout(function() {
$('form').submit();
}, delayInMilliseconds)
این فرم که شما سلکت کردید شامل چندین فرم داخل صفحه شما میشه. باید کلیدی که فشار میدید رابطه ای با فرم مورد نظر شما داشته باشه تا درست سلکت بشه ،مثلا اگر parent باشه:
setTimeout(function() {
$(this).parent('form').submit();
}, delayInMilliseconds)
درود...
در تابع destroy ای دی تعریف نکردید:
public function destroy(Message $message, $id)
{
$message = Message::findOrFail($id);
$message->delete();
Session::flash('flash_message', 'Message successfully deleted!');
return back();
}@endworld
🤔🤔🤔🤔
آیدی رو توی فرم دادم دیگه !!!
بعد متد destroy یک پارامتر به صورت ورودی دریافت میکنه
شاید پاسخ شما همینجا باشد
@shahriar
آی دی توی فرم دادی ولی درخواستی که به کنترلر می فرسته رو عمل نمی کنه ...
توی پروژه کوچیکی که من نوشتم به این صورته:
تعریف دکمه حذف :
<form action="{{ route('users.destroy', $user->id) }}" method="get">
@csrf
@method('DELETE')
<input type="submit" value="حذف" class="btn btn-danger btn-sm">
</form>
2.تعریف تابع حذف محتوا:
public function destroy($id)
{
$users = User::where('id',$id)->delete();
return back()->withInfo('کاربر مورد نظر با موفقیت حذف شد.');
}باز هم همونجوره
شما نیاز نیست از فرم استفاده کنید به راحتی با یه دستور ایجکس می تونید عملیات حذف رو انجام بدید
مثلا نمونه زیر رو من خودم استفاده میکنم فقط دارم از پیغام سفارشی که خودم ایجاد کردم استفاده میکنم اونطرف داخل کنترلر فقط یه پیغام موفقیت آمیر رو return میکنید
<a class="text-danger item-delete" href="https://roocket.ir/{{ route('permissions.destroy', $permission->id) }}" data-id="{{ $permission->id }}" title="حذف" data-toggle="tooltip"><i class="feather icon-trash"></i></a>
$(document).ready(function () {
$('.item-delete').on('click', function (e) {
e.preventDefault();
var element = e.target;
var id = $(this).data('id');
var token = $("meta[name='csrf-token']").attr("content");
showConfirm('آیا از حذف این دسترسی اطیمنان دارید؟؟', function () {
$.ajax({
url: '/admin/permissions/' + id,
type: "DELETE",
headers: {'X-CSRF-TOKEN': token},
success: function (data) {
$('#tr_' + id).slideUp('slow');
addToast("دسترسی مورد نظر با موفقیت حذف شد.", "linear-gradient(to right, #D92644, #F29D0D)");
}
});
});
});
});@hossein.r.1442 ممنونم فقط یک سوال
showConfirm از کجا میاد؟
@wozniak
آره دقیقا مشکل این بود
چون توی فانکشن set timeout گزاشته بودم این اتفاق براش افتاده بود ممنون از شما