跳转到主要内容
约 4 分钟阅读

路由系统 (Routing)

Laravel 拥有极其富有表现力且直观的路由引擎。所有基本路由都在 routes/web.phproutes/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');
});