本文目录导读:

在 Laravel 中,验证成功后路由的命名通常涉及表单提交后的跳转逻辑,以下是几种常见场景的命名和实现方式:
基本表单验证后重定向
// routes/web.php
Route::post('/user/store', [UserController::class, 'store'])->name('user.store');
Route::get('/user/success', [UserController::class, 'success'])->name('user.success');
控制器中:
public function store(Request $request)
{
$validated = $request->validate([
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
]);
// 创建用户...
User::create($validated);
// 验证成功后重定向
return redirect()->route('user.success')
->with('success', '用户创建成功!');
}
使用表单请求验证
创建 FormRequest:
php artisan make:request StoreUserRequest
// app/Http/Requests/StoreUserRequest.php
class StoreUserRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'email' => 'required|email|unique:users',
'password' => 'required|min:8',
];
}
}
控制器中使用:
public function store(StoreUserRequest $request)
{
$validated = $request->validated();
User::create($validated);
return redirect()->route('user.success')
->with('success', '用户创建成功!');
}
带参数的成功路由
// 路由定义
Route::get('/user/{id}/profile', [UserController::class, 'profile'])->name('user.profile');
// 控制器中
public function store(StoreUserRequest $request)
{
$user = User::create($request->validated());
return redirect()->route('user.profile', ['id' => $user->id])
->with('success', '账户创建成功!');
}
使用命名空间分组
Route::prefix('admin')->name('admin.')->group(function () {
Route::post('/users', [AdminUserController::class, 'store'])->name('users.store');
Route::get('/users/success', [AdminUserController::class, 'success'])->name('users.success');
});
完整示例
// routes/web.php
Route::resource('posts', PostController::class)->names([
'create' => 'posts.create',
'store' => 'posts.store',
'show' => 'posts.show',
]);
// PostController.php
class PostController extends Controller
{
public function store(Request $request)
{
$validated = $request->validate([
'title' => 'required|max:255',
'content' => 'required',
'category_id' => 'required|exists:categories,id',
]);
$post = auth()->user()->posts()->create($validated);
return redirect()
->route('posts.show', $post->id)
->with('success', '文章发布成功!');
}
}
验证失败自定义重定向
// 在 FormRequest 中
public function failedValidation(Validator $validator)
{
throw new ValidationException($validator, response()->json([
'message' => '验证失败',
'errors' => $validator->errors()
], 422));
// 或者重定向到自定义页面
// throw new ValidationException($validator,
// redirect()->route('error.page')->withErrors($validator)
// );
}
最佳实践命名规范:
- 资源路由:使用
resource自动生成的命名 - 操作+资源:
{资源}.{操作}格式,如users.store - 业务场景:
{模块}.{功能}.{动作},如admin.posts.store - 状态命名:
{资源}.{状态},如payment.success
路由命名建议:
- 验证前的路由:
{场景}.verify或{场景}.confirm - 验证后的成功路由:
{场景}.success或{场景}.completed - 验证失败的路由:
{场景}.failed或{场景}.error
保持命名一致性和可读性很重要,建议在项目中使用统一的命名规范。
版权声明:NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
NBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
CBA直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
足球直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播
英超直播