📅  最后修改于: 2023-12-03 15:02:38.439000             🧑  作者: Mango
在 Laravel 中,路由可以接受参数来满足不同的需求。在本文中,我们将介绍 Laravel 路由参数的常见用法。
在 Laravel 路由中,用 (
和 )
括起来的字符串被视为参数。下面是一个简单的例子:
Route::get('/users/{id}', function ($id) {
return 'User '.$id;
});
在此示例中,我们创建了一个 /users/{id}
路由。当用户在浏览器中请求该路由时,Laravel 将调用该路由处理程序并将 {id}
参数传递给它。
注意,花括号 {}
之间的名称将被视为参数的名称。在该处理程序中,我们将这个参数称为 $id
。这个名称完全是自由的,可以随意命名。
在一些情况下,您可能希望从 URL 中省略可选参数。在 Laravel 中,我们只需要在参数名后面添加 ?
来实现这一点。
Route::get('/users/{id}/{name?}', function ($id, $name = null) {
return $name ? 'User '.$id.': '.$name : 'User '.$id;
});
在这个例子中,我们定义了一个可选参数 {name}
。如果请求 URL 中包含该参数,则将其传递给处理程序。否则,我们将使用默认值 null
。
注意,可选参数必须在路由参数中的最后一个位置。
有时候,我们可能需要对路由参数进行更严格的约束。在 Laravel 中,我们可以使用正则表达式来实现这一点。
Route::get('/users/{id}/{name}', function ($id, $name) {
return 'User '.$id.': '.$name;
})->where(['id' => '[0-9]+', 'name' => '[a-z]+']);
在这个例子中,我们使用 where
方法来设置正则表达式约束。具体来说,我们要求 {id}
参数只能是数字,而 {name}
参数只能是小写字母。
Laravel 默认支持以下几种正则表达式约束:
alpha
: 仅匹配大小写字母。alpha_num
: 仅匹配大小写字母和数字。alpha_dash
: 匹配大小写字母、数字和破折号。numeric
: 仅匹配数字。regex:pattern
: 使用自定义正则表达式进行匹配。在 Laravel 中,我们可以给路由命名。这将使我们能够在代码中引用这些路由,而不必在多个文件中寻找它们。
Route::get('/users/{id}/{name}', function ($id, $name) {
return 'User '.$id.': '.$name;
})->name('user.profile');
在这个例子中,我们为路由设置了一个名称 user.profile
。接下来,我们可以在代码中引用这个路由,如下所示:
$url = route('user.profile', ['id' => 1, 'name' => 'john']);
在这个例子中,我们可以通过 route
函数来生成一个 URL,它将自动替换路由中的参数。
在本文中,我们介绍了 Laravel 路由参数的基础知识,并介绍了一些高级技巧,例如可选参数和正则表达式约束。请记住,路由参数是 Laravel 强大而灵活的工具之一,可以帮助您构建出色的 Web 应用程序。