Laravel路由通过Route门面定义,支持GET、POST等方法,可使用{参数}传递必选或可选参数,并可通过where方法约束参数格式,还可为路由命名以便生成URL,参数能自动传递给控制器方法。

在 Laravel 中,路由是应用的核心部分,负责将请求映射到对应的控制器或闭包函数。定义路由和传递参数非常灵活,下面详细介绍 Laravel 路由的定义方式以及参数传递的方法。
Laravel 的路由文件位于 routes/web.php(用于 Web 请求)和 routes/api.php(用于 API 请求)。你可以使用 Route 门面来定义各种 HTTP 方法的路由。
Route::get('/home', function () { return '首页'; });
Route::post('/submit', function () { return '提交成功'; });
Route::match(['get', 'post'], '/login', function () { ... });
Route::any('/any', function () { return '接收所有请求'; });
在实际开发中,我们经常需要从 URL 中获取动态参数,比如用户 ID、文章 slug 等。Laravel 支持通过占位符的方式定义带参数的路由。
1. 必选参数
在路由 URI 中使用花括号 {参数名} 定义参数:
Route::get('/user/{id}', function ($id) {<br>
return '用户ID:' . $id;<br>
});可以定义多个参数:
Route::get('/post/{year}/{month}', function ($year, $month) {<br>
return "文章发布于:$year 年 $month 月";<br>
});2. 可选参数
在参数后加问号,并为回调函数参数设置默认值:
Route::get('/user/{name?}', function ($name = '游客') {<br>
return '欢迎:' . $name;<br>
});3. 参数约束(正则验证)
使用 where 方法限制参数格式,例如只允许数字:
Route::get('/user/{id}', function ($id) {<br>
return '用户ID:' . $id;<br>
})->where('id', '[0-9]+');多个参数分别约束:
Route::get('/user/{id}/role/{role}', function ($id, $role) {<br>
return "用户 $id 的角色是 $role";<br>
})->where(['id' => '[0-9]+', 'role' => '[a-zA-Z]+']);Laravel 还提供了一些快捷约束方法,如:
->whereNumber('id'):只允许数字->whereAlpha('name'):只允许字母->whereAlphaNumeric('slug'):允许字母和数字给路由命名后,可以在生成链接时自动填充参数:
Route::get('/product/{id}', function ($id) {<br>
// 处理逻辑<br>
})->name('product.show');在视图或代码中使用 route() 函数生成带参数的 URL:
route('product.show', ['id' => 123])<br>
// 输出: /product/123实际项目中,路由通常指向控制器方法。参数会自动传递给对应的方法:
Route::get('/article/{slug}', [ArticleController::class, 'show']);
控制器中接收参数:
class ArticleController extends Controller<br>
{<br>
public function show($slug)<br>
{<br>
$article = Article::where('slug', $slug)->first();<br>
return view('article.show', compact('article'));<br>
}<br>
}你也可以使用 Request 对象或其他类型提示,Laravel 会自动解析依赖。
基本上就这些。路由定义和参数传递是 Laravel 开发的基础,掌握好这些能让你更高效地构建应用。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号