约 4 分钟阅读
路由系统 (Routing)
Laravel 拥有极其富有表现力且直观的路由引擎。所有基本路由都在 routes/web.php 和 routes/api.php 文件中定义。
基本路由语法
use Illuminate\Support\Facades\Route;
use App\Http\Controllers\UserController;
// 基础 GET 路由
Route::get('/welcome', function () {
return view('welcome');
});
// 指向控制器动作
Route::get('/users', [UserController::class, 'index']);
Route::post('/users', [UserController::class, 'store']);
Route::get('/users/{id}', [UserController::class, 'show']);
Route::put('/users/{id}', [UserController::class, 'update']);
Route::delete('/users/{id}', [UserController::class, 'destroy']);
路由参数与正则约束
// 必须参数与正则约束
Route::get('/user/{id}', function (string $id) {
return '用户 ID: ' . $id;
})->where('id', '[0-9]+');
// 多个参数
Route::get('/posts/{post}/comments/{comment}', function ($postId, $commentId) {
return "文章: $postId, 评论: $commentId";
});
隐式模型绑定 (Route Model Binding)
Laravel 会自动将路由参数名称与 Eloquent 模型的主键进行匹配,自动查询数据库并注入模型实例。若未查到则自动返回 404 响应:
use App\Models\User;
// 当请求 /users/42 时,Laravel 自动执行 User::findOrFail(42) 并注入
Route::get('/users/{user}', function (User $user) {
return view('users.show', ['user' => $user]);
});
路由分组与中间件
Route::middleware(['auth'])->prefix('admin')->group(function () {
Route::get('/dashboard', [AdminController::class, 'dashboard'])->name('admin.dashboard');
Route::get('/settings', [AdminController::class, 'settings'])->name('admin.settings');
});