我想在我的网络项目中使用 CRUD,我导入了初学者工具包 Breeze 来进行 CRUD(在项目创建之后/有点太晚了)
不幸的是,我无法从控制器访问该方法,我总是通过另一个控制器 AuthenticatedSessionController 重定向到注销方法,该控制器调用另一个销毁方法来注销。
在这种情况下,我希望调用配置文件控制器而不是经过身份验证的控制器并应用 CRUD 方法
AuthenticatedSessionController:
public function logout(Request $request): RedirectResponse
{
Auth::guard('web')->logout();
$request->session()->invalidate();
$request->session()->regenerateToken();
return redirect('/');
}
ProfileController:(应该销毁、编辑等):
public function edit(Request $request): View
{
return view('profile.edit', [
'user' => $request->user(),
]);
}
/**
* Update the user's profile information.
*/
public function update(ProfileUpdateRequest $request): RedirectResponse
{
$request->user()->fill($request->validated());
if ($request->user()->isDirty('email')) {
$request->user()->email_verified_at = null;
}
$request->user()->save();
return Redirect::route('profile.edit')->with('status', 'profile-updated');
}
public function destroy(Request $request): RedirectResponse
{
$request->validateWithBag('userDeletion', [
'password' => ['required', 'current_password'],
]);
$user = $request->user();
Auth::logout();
$user->delete();
$request->session()->invalidate();
$request->session()->regenerateToken();
return Redirect::route('/')
->with('success', __('messages.user_deleted_successfully'));
}
我的路线web.php
Route::middleware('auth')->group(function () {
Route::get('/profile', [ProfileController::class, 'edit'])->name('profile.edit');
Route::patch('/profile', [ProfileController::class, 'update'])->name('profile.update');
// dd('124');
// Route::delete('/profile', [ProfileController::class, 'destroy'])->name('profile.destroy');
});
require __DIR__.'/auth.php';
我的路线 auth.php
Route::post('logout', [AuthenticatedSessionController::class, 'logout'])
->name('logout');
Route::delete('/profile', [AuthenticatedSessionController::class, 'destroyUser'])->name('profile.destroy');
以及我的观点:
<form action="{{ route('profile.destroy', auth()->user()->name) }}" method="POST">
@csrf
@method('delete')
<button type="submit" class="text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm inline-flex items-center px-3 py-2.5 text-center mr-2 dark:focus:ring-red-900">Delete</button>
</form>
这是因为您在注销中添加了方法 DELETE
<form action="{{ route('profile.destroy', auth()->user()->name) }}" method="POST">
@csrf
<button type="submit" class="text-white bg-red-600 hover:bg-red-800 focus:ring-4 focus:ring-red-300 font-medium rounded-lg text-sm inline-flex items-center px-3 py-2.5 text-center mr-2 dark:focus:ring-red-900">Delete</button>
</form>
where `@method('delete')` is removed