📜  如何在 laravel 的路由中传递参数 - PHP (1)

📅  最后修改于: 2023-12-03 15:38:19.449000             🧑  作者: Mango

如何在 Laravel 的路由中传递参数 - PHP

在 Laravel 中,我们通常需要在路由中传递一些参数,例如用户 ID 或其他数据。本文将介绍在 Laravel 中如何传递和获取路由参数。

传递参数

在 Laravel 的路由中,我们可以使用 {} 来定义参数。例如,以下代码定义了一个接受 id 参数的路由:

Route::get('/users/{id}', function ($id) {
    // 处理用户 id 请求
});

在 URL 中传递参数时,我们使用类似于以下的格式:

/users/123

其中 123 是要传递的参数。当我们访问这个 URL 时,Laravel 将自动将 123 作为参数传递给我们的路由回调函数。

我们可以在回调函数中使用 $id 变量来访问这个参数。以下是一个简单的例子:

Route::get('/users/{id}', function ($id) {
    $user = User::find($id);

    return view('users.show', ['user' => $user]);
});

在这个路由中,我们将 $id 参数传递给 User::find() 方法来查找用户。然后,我们将查找到的用户对象传递给 users.show 视图,以便显示用户信息。

可选参数

在 Laravel 中,我们可以通过在参数名之后添加 ? 来定义可选参数。例如,以下代码定义了一个接受 id 和可选 name 参数的路由:

Route::get('/users/{id}/{name?}', function ($id, $name = null) {
    // 处理用户 id 和可选姓名请求
});

在这个路由中,我们可以省略可选参数 name。例如,以下 URL 与上述路由匹配:

/users/123

如果我们想传递可选参数,则可以使用类似以下的格式:

/users/123/john

在这种情况下,Laravel 将自动将 123john 作为参数传递给路由回调函数。如果我们省略了可选参数 name,则 $name 变量将会是 null

命名路由参数

在 Laravel 中,我们可以为路由参数定义名称。这样,我们可以在构建 URL 时使用名称而不是参数变量。例如,以下代码定义了一个命名路由:

Route::get('/users/{id}', function ($id) {
    // 处理用户 id 请求
})->name('users.show');

在这个路由中,我们使用 ->name('users.show') 方法为路由定义名称。现在,我们可以在代码中使用这个名称来构建 URL:

$url = route('users.show', ['id' => 123]);

在这个代码中,route() 函数将根据名称和参数构建 URL。这里我们将 id 参数设置为 123。最终的 URL 将是类似于以下的形式:

http://example.com/users/123
结论

在本文中,我们介绍了 Laravel 中如何传递和获取路由参数。我们讨论了如何定义参数、可选参数和命名参数,并展示了如何构建 URL。希望这篇文章对您有所帮助!