编辑!最新代码已更新,新错误^我目前正在设计一个网站,该网站具有供用户创建帐户的功能。我在尝试首先删除用户,然后在登录时删除该用户时遇到问题。
我的用户控制器看起来像这样:
public function destroy(Request $request)
{
$user = Auth::user();
Auth::logout();
if ($user->delete())
{
return Redirect::route('\home')->with('global', 'Your account has been deleted!');
}
}
从表单中打开的我的Modal引导窗口看起来像这样;
<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('users.delete'}}" method="Post">
@csrf
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</form>
</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>
</div>
</div>
</div>
最后我的路线看起来像这样;
Route::post('/users/delete', 'Admin\UsersController@destroy')->name("users.delete");
欢迎任何有关如何首先使之工作并继之以实施它的想法。谢谢
请告诉我们您遇到的错误。
我认识到看到您的代码的第一件事是,您在方法的第二行返回。但是返回之后,您仍然希望代码能够运行。不幸的是,这是行不通的。返回后的代码将被忽略。
尝试拆分方法:
Route::delete('/users/destroy', ['uses' =>'Admin\UsersController@destroy', 'as' => 'users.destroy']);
Route::get('/users/delete', ['uses' =>'Admin\UsersController@delete', 'as' => 'users.delete']);
表单方法和请求应如下所示:
<form action="{{route(users.destroy)}}" method="delete">
实际问题是路由类型不匹配。在将表单提交到GET
类型的路由时,您已经定义了DELETE
类型的路由。
请用此代码替换您的代码并检查:
<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>
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<form action="{{route('users.delete', ['user' => Auth::id()])}}" method="Post">
<span aria-hidden="true">×</span>
</button>
</div>
@csrf
@method('delete')
<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>
</div>
</div>
</div>
并更改您的路线至此
Route::delete('/users/{user}', 'Admin\UsersController@destroy')->name("users.delete");
您的控制器缺少IF-THEN语句
public function destroy(User $user)
{
if($user->id !== Auth::id()) return view('admin.users.delete')->with('user', Auth::user());
Auth::logout();
if ($user->delete())
{
return Redirect::route('\home')->with('global', 'Your account has been deleted!');
}
}
请用此代码替换您的代码并检查:
<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-account'}}" method="Post">
@csrf
<button type="button" class="close" data-dismiss="modal" aria-label="Close">
<span aria-hidden="true">×</span>
</button>
</form>
</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>
</div>
</div>
</div>
并更改您的路线至此
Route::post('/users/delete', 'Admin\UsersController@destroy')->name("delete-account");
您的控制器缺少IF-THEN语句
public function destroy(Request $request)
{
$user = Auth::user();
Auth::logout();
if ($user->delete())
{
return Redirect::route('\home')->with('global', 'Your account has been deleted!');
}
}