📜  laravel 路由必填参数 - PHP (1)

📅  最后修改于: 2023-12-03 14:43:49.937000             🧑  作者: Mango

Laravel 路由必填参数 - PHP

Laravel 是一款优秀的 PHP 框架,它的路由系统非常强大,可以帮助我们管理 Web 应用中的 URL 等资源。本文将介绍 Laravel 路由中的必填参数的用法。

必填参数

有时候,我们需要从请求 URL 中获取参数值,例如我们可以通过 GET 方法访问 https://example.com/users/1 来获取 id 为 1 的用户信息。在 Laravel 中,我们可以在路由中定义必填参数,以便获取 URL 中指定的参数值。

基础用法

定义必填参数非常简单,只需在路由参数前添加 {},如下所示:

Route::get('/users/{id}', function ($id) {
    return "User {$id}";
});

在上述例子中,我们定义了一个 /users/{id} 的路由,其中 {id} 是必填参数。当我们访问 https://example.com/users/1 时,$id 会自动获取 URL 中的值(这里是 1),然后输出字符串 User 1

可以看到,我们在回调函数中使用 $id 参数获取了 URL 中的值。在 Laravel 中,可以使用任意数量的必填参数,它们会按顺序传递给回调函数。

正则表达式限制

有时候,我们需要限制必填参数的值必须满足一定的条件。例如,在上述例子中,我们希望 {id} 的值必须是一个数字,可以通过在路由参数中添加正则表达式来解决:

Route::get('/users/{id}', function ($id) {
    return "User {$id}";
})->where('id', '[0-9]+');

在上述例子中,我们使用 where 方法限制 {id} 必须是一个或多个数字。如果传递的参数不满足正则表达式,Laravel 将返回 404 错误页面。

多个必填参数

当我们需要多个必填参数时,可以按顺序在路由参数中添加多个必填参数,如下所示:

Route::get('/users/{id}/orders/{orderId}', function ($id, $orderId) {
    return "User #{$id} Order #{$orderId}";
});

在上述例子中,我们定义了一个 /users/{id}/orders/{orderId} 的路由,其中 {id}{orderId} 是两个必填参数。当我们访问 https://example.com/users/1/orders/2 时,$id 自动获取 URL 中的第一个值(这里是 1),$orderId 自动获取 URL 中的第二个值(这里是 2),然后输出字符串 User #1 Order #2

命名参数

有时候,在处理复杂的路由时,我们需要给必填参数起一个具体的名称,以提高代码可读性。在 Laravel 中,我们可以给必填参数起一个可读的名称,并在回调函数中使用该名称来获取参数的值。示例如下:

Route::get('/users/{id}/orders/{orderId}', function ($userId, $orderId) {
    return "User #{$userId} Order #{$orderId}";
})->name('user-order');

// 使用命名路由
$url = route('user-order', ['userId' => 1, 'orderId' => 2]);

在上述例子中,我们使用 name 方法为路由命名,并使用可读的参数名称 $userId$orderId,以提高代码的可读性。在回调函数中,我们使用这两个名称获取参数的值。在获取 URL 时,我们使用 route 方法和命名参数来生成 URL。