Norgul
Norgul

Reputation: 4783

Laravel with Sweet Alert redirect

I have made a delete modal with Sweet Alert in Laravel and it is deleting user I choose. I would however after deletion like to redirect back to users list as my destroy() method says.

<script>
    $('a#delete_user').on('click', function () {
        var url = $(this).attr("data-href");
        swal({
                title: "Delete user?",
                text: "Submit to delete",
                type: "warning",
                showCancelButton: true,
                closeOnConfirm: false,
                confirmButtonColor: "#DD6B55",
                confirmButtonText: "Delete!"
            },
            function () {
                setTimeout(function () {
                    $.ajax({
                        type: "POST",
                        url: url,
                        data: {
                            _method: 'DELETE',
                            _token: csrf_token
                        },
                        success: function (data) {
                            if (data)
                                swal("Deleted!", "User has been deleted", "success");
                            else
                                swal("cancelled", "User has not been deleted", "error");
                        }
                    }), 2000
                });
            });
    })
</script>

Here is the controller:

public function destroy($id)
{
    User::destroy($id);
    return redirect('users')->with('status', 'User Deleted!');
}

I would like to redirect to users list with message, and I have trouble doing so

Upvotes: 2

Views: 8190

Answers (2)

MohamedSabil83
MohamedSabil83

Reputation: 1559

Edit js file like this:

success: function (data) {
if (data == 'success')
    swal("Deleted!", "User has been deleted", "success");
    window.location('Your URL');
else
    swal("cancelled", "User has not been deleted", "error");
}

and the controller:

if(User::destroy($id)){
    return 'success';
}else{
    return 'fail';
}

Upvotes: 0

sebbz
sebbz

Reputation: 554

In your main template file or in view file, you have to check if there is status data in session, if yes so you call sweet alert. Example code:

@if (session('status'))
    <script>
        $( document ).ready(
            swal("{{ session('status') }}")
        });
    </script>
@endif

Upvotes: 1

Related Questions