Как удалить после подтверждения Sweet-alert в Laravel?

Я подключил плагин sweetalert для сообщения с подтверждением. Но он не получает команду подтверждения (кнопка onclick yes/confirm).

Это моя кнопка удаления:

<a id="demoSwal" href="{{ route('setting.website_type.destroy', ['id' => $websiteType->id]) }}" class="btn btn-light btn-sm btn-delete demoSwal" data-toggle="tooltip" data-placement="top" title="Delete This Type"><i class="far fa-trash-alt"></i></a>

Это мой JS-код:

$(document).ready(function(){
    $('.demoSwal').click(function(){
            swal({
                title: "Are you sure?",
                text: "You will not be able to recover this file!",
                type: "warning",
                showCancelButton: true,
                confirmButtonText: "Yes, delete it!",
                cancelButtonText: "No, cancel plx!",
                closeOnConfirm: false,
                closeOnCancel: false
            },
            function(isConfirm) {
                if (isConfirm) {
                    swal("Deleted!", "Your Data file has been deleted.", "success");
                } else {
                    swal("Cancelled", "Your Data file is safe :)", "error");
                }
            });
        });
});

Это мой код контроллера:

public function destroy($id)
    {
        $delete_website_type = WebsiteType::find($id);
        $delete_website_type->delete();

        return redirect()->back();

    }

Пожалуйста, дайте мне решение...


person NIKHIL KURMI    schedule 06.03.2019    source источник


Ответы (2)


вы должны поставить .then()

let id = $("#your_id").val();
swal({
    title: "Are you sure?",
    text: "You will not be able to recover this file!",
    type: "warning",
    showCancelButton: true,
    confirmButtonText: "Yes, delete it!",
    cancelButtonText: "No, cancel plx!",
    closeOnConfirm: false,
    closeOnCancel: false
 }).then((isConfirm) => {
        if(isConfirm) {
               //you can just use fetchAPI 
               fetch(`route_to_your_destroy_method/${id}`)
               .then(response => response.json()
               .then(result => {
                     //your result
                      if (result == 'success') {
                          //alert success
                      }else {
                           //alert fail
                      }
                }).catch(err => {console.log(err)});
        }
 });

и в вашем методе уничтожения

$delete_website_type = WebsiteType::find($id)->delete();
 if(delete_website_type) {
    $message = 'success';
 }else {
     $message = 'fail';
 }
  return json_encode($message);
person Jiel    schedule 06.03.2019

Попробуйте

для кнопки удаления: ---

 <a href="" class="button" data-id="{{$websiteType->id}}"><i class="far fa-trash-alt"></i></a>

в Jquery

$(document).on('click', '.button', function (e) {
    e.preventDefault();
    var id = $(this).data('id');
    swal({
            title: "Are you sure!",
            type: "error",
            confirmButtonClass: "btn-danger",
            confirmButtonText: "Yes!",
            showCancelButton: true,
        },
        function() {
            $.ajax({
                type: "POST",
                url: "{{url('/setting/website_type/destroy')}}",
                data: {id:id},
                success: function (data) {
                              //
                    }         
            });
    });
});

а также

public function destroy(Request $request)
{
    $delete_website_type = WebsiteType::find($request->id)->delete();
    return redirect()->route('website.index')
                    ->with('success','Website deleted successfully');
}

я обновил свой ответ, попробуйте этот.

person Jaykant    schedule 06.03.2019
comment
Нет... Это не работает @Jaykant - person NIKHIL KURMI; 07.03.2019