目前,我正在开发一个网站。我正在为自己的功能之一开发CRUD,直到删除点为止都没有问题。我正在使用引导模式窗口作为警告窗口,弹出该窗口是为了澄清您希望删除帐户。该视图和弹出窗口的代码如下:
<div class="container">
<div class="row justify-content-center">
<div class="col-md-8">
<div class="card">
<div class="card-header">
<img src="{{ asset('/uploads/avatars/' . $user->avatar ) }}" style="width:100px; height:100px; float:left;
margin-right:25px ">
<strong>Delete {{$user->name}}'s account?</strong></div>
<div class="card-body">
<form action="delete" method="POST" enctype="multipart/form-data">
{{csrf_field()}}
<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">×</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>
此页面和功能的“我的路线”如下所示:
Route::get('/users/delete', 'Admin\UsersController@index')->name('delete');
Route::delete('admin/users/{user}', 'Admin\UsersController@destroy')->name('users.destroy');
public function destroy($id,Request $request)
{
$user = User::where("id","=",$id)->first();
$user->delete($id);
if ($user->delete())
{
return Redirect::route('home')->with('global', 'Your account has been deleted!');
}
}
此外,每当我尝试通过带路线的下拉菜单访问页面
<a class="dropdown-item" href="{{ route('users.destroy', $user)}}">
Delete Account
我遇到一个空白页,我确定这取决于参数。因此,为了澄清一下,
每当弹出模式窗口,并且用户单击“是,删除我的帐户”时,什么都不会发生,并且窗口保持打开状态,并且我路由到页面
{{ route('users.destroy', $user)}}
导致空白页。
任何帮助将不胜感激!
答案 0 :(得分:0)
这是我们尝试删除Laravel的方法
public function destroy(User $user)
{
$user->delete();
return Redirect::route('home')->with('global', 'Your account has been deleted!');
}
答案 1 :(得分:0)
更改
<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>
答案 2 :(得分:0)
根据您的配置,您似乎为表单和锚点使用了错误的别名。您应该切换它们。
这是您的路由配置:
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!');
}
希望这会有所帮助。
答案 3 :(得分:-1)
u可以使用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;
}