سلام دوستان خسته نباشید
من میخوام موقعی که داخل پنل مدیریت مدیر خواست یک پستی رو حذف کنه یه الرت نمایش داده بشه
برای همین از سوییت الرت استفاده میکنم
تا اینجای قضیه مشکلی نیست
مشکل اینه که وقتی 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('کاربر مورد نظر با موفقیت حذف شد.');
}
@shahriar
در قسمت زیر
setTimeout(function() {
$('form').submit();
}, delayInMilliseconds)
این فرم که شما سلکت کردید شامل چندین فرم داخل صفحه شما میشه. باید کلیدی که فشار میدید رابطه ای با فرم مورد نظر شما داشته باشه تا درست سلکت بشه ،مثلا اگر parent باشه:
setTimeout(function() {
$(this).parent('form').submit();
}, delayInMilliseconds)
شما نیاز نیست از فرم استفاده کنید به راحتی با یه دستور ایجکس می تونید عملیات حذف رو انجام بدید
مثلا نمونه زیر رو من خودم استفاده میکنم فقط دارم از پیغام سفارشی که خودم ایجاد کردم استفاده میکنم اونطرف داخل کنترلر فقط یه پیغام موفقیت آمیر رو return میکنید
<a class="text-danger item-delete" href="{{ 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)");
}
});
});
});
});
@wozniak
آره دقیقا مشکل این بود
چون توی فانکشن set timeout گزاشته بودم این اتفاق براش افتاده بود ممنون از شما
سلام ببخشید دیر پاسخ میدم گفتم بگم شاید بعدا نیازتون شد
توی اون کدهایی که من فرستادم توابعی که براتون آشنا نیست رو من خودم ساختم چون زیاد استفاده میکنم ساختم که راحت باشم برای استفاده
آیا مایل به ارسال نوتیفیکیشن و اخبار از طرف راکت هستید ؟