为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 6:在仍然登录的情况下删除用户

Laravel 6:在仍然登录的情况下删除用户

PHP
牛魔王的故事 2022-12-03 09:47:33
目前我正在开发一个网站。我正在为我的一项功能开发 CRUD,并且在删除点之前没有遇到任何问题。我使用 bootstrap 模式窗口作为弹出的警告窗口,以阐明您希望删除您的d()}}                <div class="form-group">                    <label for="name">Account Email:</label>                    <input type="text" name ="email" value="{{$user -> email}}" class="form-control" readonly>                    <div class="form-group">                    <div class="text-centre">                    <p></p>                    <button type="button" data_userid="{{$user->id}}" class="btn btn-danger" data-toggle="modal" data-target="#deleteModal">                        Delete                    </button>                    </div>                    </form>                </div>                </div>            </div>        </div>    </div></div><div class="modal fade" id="deleteModal" tabindex="-1" role="dialog" aria-labelledby="deleteModalLabel" aria-hidden="true">  <div class="modal-dialog" role="document">    <div class="modal-content">      <div class="modal-header">        <h5 class="modal-title" id="deleteModalLabel">Are you sure?</h5>        <form action="{{ route('delete', $user)}} " method="post">        {{method_field('delete')}}        {{csrf_field()}}        <button type="button" class="close" data-dismiss="modal" aria-label="Close">          <span aria-hidden="true">&times;</span>        </button>      </div>      <div class="modal-body">        Are you sure you want to permanetly delete your account?      </div>      <div class="modal-footer">        <button type="button" class="btn btn-primary" data-dismiss="modal">No, cancel</button>        <button type="submit" class="btn btn-danger">Yes, delete my account</button>      </div>      </form>    </div>  </div></div>另外,每当我尝试从带有路由的下拉菜单访问页面时 <a class="dropdown-item" href="{{ route('users.destroy', $user)}}">                                        Delete Account我遇到了一个空白页面,我确信这取决于参数。所以澄清一下,每当模式窗口弹出并且用户点击“是,删除我的帐户”时,什么都没有发生,窗口保持打开状态,我到页面的路由 {{ route('users.destroy', $user)}} 会导致空白页面。任何帮助是极大的赞赏!
查看完整描述

4 回答

?
斯蒂芬大帝

TA贡献1827条经验 获得超8个赞

这就是我们尝试删除 Laravel 的方式


public function destroy(User $user)

{  

    $user->delete();

    return Redirect::route('home')->with('global', 'Your account has been deleted!');        

}


查看完整回答
反对 回复 2022-12-03
?
森栏

TA贡献1810条经验 获得超5个赞

改变

<form action="{{ route('delete', $user)}} " method="post">

<form action="{{ route('delete', ['user' => $user]) }}" method="post">

在模态。

<a class="dropdown-item" href="{{ route('users.destroy', $user)}}">Delete Account </a>

不起作用,因为它是 GET 请求。删除应该是一个 DELETE 请求。

所以你应该点击打开模态;

<a href="#" data-toggle="modal" data-target="#deleteModal" class="dropdown-item"> Delete Account</a>


查看完整回答
反对 回复 2022-12-03
?
料青山看我应如是

TA贡献1772条经验 获得超8个赞

根据您的配置,您似乎为表单和锚点使用了错误的别名。你应该切换它们。

这是你的路线配置:

Route::get('/users/delete', '[...]')->name('delete'); 
Route::delete('admin/users/{user}', '[...]')->name('users.destroy');

这是你应该如何使用它们:

  • <a/>应该使用route('delete')

  • <form/>应该使用route('users.destroy', ['user' => $userId]).

您的删除操作应如下所示:

  • 删除用户

  • 注销当前用户

  • 重定向到某处

  public function destroy($id)

  {  

      User::find($id)->delete();

      Auth::logout();


      return Redirect::route('home')

          ->with('global', 'Your account has been deleted!');


  }

希望这可以帮助。


查看完整回答
反对 回复 2022-12-03
?
慕尼黑5688855

TA贡献1848条经验 获得超2个赞

你可以使用 ajax 和 sweetalert 来做到这一点,它对 ui 更具交互性


在你的刀片文件中


@foreach($user as $u)

   <a href="javascript:void(0);" classs="delete" data-id="{{$u->id}}">Delete</a>

@endforeach

在你的刀片底部你可以调用ajax请求


<script>

  $(document).on('click','.delete',function()

  {

    var id = $(this).data('id');

    swal({

        title: 'Are you sure you want to delete this?',

        type: "warning",

        showCancelButton: true,

        confirmButtonClass: "btn btn-danger m-btn m-btn--pill m-btn--icon m-btn--air",

        confirmButtonText: '<span><i class="la la-thumbs-up"></i> Yes, Delete it!</span>',

        cancelButtonClass: 'btn btn-secondary m-btn m-btn--pill m-btn--icon m-btn--air',

        cancelButtonText: '<span><i class="la la-thumbs-down"></i>No, thanks</span>',

    }).then(function(e){

        if(e.value){

            $.ajax({

                url:"{{route('admin.document.delete')}}",

                type:'POST',

                headers:{ 'X-CSRF-Token' : jQuery('meta[name=csrf-token]').attr('content') },

                dataType:'json',

                data:{'id':id,_token: '{{csrf_token()}}'},

                success:function(response){   

                    var msg = response.msg;

                    if(response.status=='success'){

                        //here you can do whatever after delete msg

                        //for reload u can use - (location.reload);

                    }

                },


            });

        }

    });

}); 

</script>

最后在你的控制器中


public function destroy(Request $request)

{

   $id=$request['id'];

   $delete = manageMultipleDocument::find($id)->delete();

//optional

   $flashArr = array(

            'msg' => 'Document deleted successfully.',

            'status' => 'success'

        );

//optional

   $request->Session()->flash('succ_message',$flashArr);

//Required return any thing

   return $flashArr;

}


查看完整回答
反对 回复 2022-12-03
  • 4 回答
  • 0 关注
  • 140 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信