【问题标题】:Laravel with Sweet Alert redirectLaravel 与 Sweet Alert 重定向
【发布时间】:2017-10-05 11:04:22
【问题描述】:

我在 Laravel 中使用 Sweet Alert 制作了一个删除模式,它正在删除我选择的用户。但是,正如我的destroy() 方法所说,我希望在删除后重定向回用户列表。

<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>

这里是控制器:

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

我想重定向到带有消息的用户列表,但这样做有问题

【问题讨论】:

    标签: php laravel sweetalert


    【解决方案1】:

    像这样编辑js文件:

    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");
    }
    

    和控制器:

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

    【讨论】:

      【解决方案2】:

      在您的主模板文件或视图文件中,您必须检查会话中是否有状态数据,如果有,则调用甜蜜警报。示例代码:

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

      【讨论】:

      • 我已经有了,它不会被触发。如果我设置 location.reload() 则不会转发任何状态
      • 你必须检查什么没有触发 - 甜蜜的警报调用,或者 session('status') 是空的,所以 if 语句没有在里面执行代码?
      • 只有在删除用户按钮中删除 ajax 请求时,我的解决方案才有效。当您使用ajax调用时,控制器中的重定向部分将不起作用。
      • 但是如果我删除ajax请求,我将如何触发路由?
      • 如果你想从控制器调用destroy方法你必须创建一个表单。例如:
        +
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 2017-03-27
      • 1970-01-01
      • 2021-07-08
      相关资源
      最近更新 更多