📜  读取全局 laravel request() - PHP (1)

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

读取全局 Laravel Request()

Laravel 应用程序中,全局请求对象在整个请求生命周期内始终可用。在控制器,视图,中间件等中,您可以使用该对象来获取当前请求的数据,路由和参数等信息。本文将介绍如何在 Laravel 中读取全局请求对象。

使用全局请求

要在 Laravel 应用程序中读取全局请求,可以使用全局帮助函数 request() 函数。该函数返回一个表示当前 HTTP 请求的实例。

public function index()
{
    $request = request();
    // ...
}

如果您正在使用 Laravel 网络框架,则可以在控制器,中间件或视图等任何地方使用 request() 函数。

读取请求数据

一旦您获取了当前请求的实例,您可以使用它来访问请求的输入数据。您可以使用 input() 函数来获取指定输入参数的值。如果未找到该参数,则可以使用 null 或提供的默认值。

public function store()
{
    $request = request();
    $name = $request->input('name');
    $age = $request->input('age', 25);
    // ...
}

如果您需要访问整个输入数组,可以使用 all() 函数。

public function store()
{
    $request = request();
    $input = $request->all();
    // ...
}

要检查特定输入参数是否存在,可以使用 has() 函数。

public function store()
{
    $request = request();
    if ($request->has('name')) {
        // ...
    }
    // ...
}
读取路由参数

您可以使用请求对象来访问当前路由的参数。路由参数是在 Route 对象中定义的动态部分。您可以使用 route() 函数获取当前路由对象。然后,您可以使用 parameters() 函数来访问当前路由的参数。

public function show($id)
{
    $route = route();
    $parameters = $route->parameters();
    $id = $parameters['id'];
    // ...
}

如果您要检查特定的路由参数是否存在,则可以使用 hasParameter() 函数。

public function show($id)
{
    $route = route();
    if ($route->hasParameter('id')) {
        // ...
    }
    // ...
}
获取请求方法

您可以使用请求对象来获取当前请求的 HTTP 方法。使用 method() 函数,您可以获取当前 HTTP 方法的字符串表示形式。

public function store()
{
    $request = request();
    $method = $request->method();
    // ...
}

使用 isMethod() 函数,您可以检查当前请求是否使用指定的 HTTP 方法。

public function store()
{
    $request = request();
    if ($request->isMethod('post')) {
        // ...
    }
    // ...
}
获取请求信息

使用请求对象,您可以访问有关当前请求的其他详细信息。使用 url() 函数,您可以获取当前请求的 URL。

public function index()
{
    $request = request();
    $url = $request->url();
    // ...
}

使用 path() 函数,您可以获取当前请求的路径(不包括查询字符串部分)。

public function index()
{
    $request = request();
    $path = $request->path();
    // ...
}

使用 query() 函数,您可以获取当前请求的查询字符串部分作为关联数组。

public function index()
{
    $request = request();
    $query = $request->query();
    // ...
}
结论

如此这般,您可以在 Laravel 应用程序中轻松地读取全局请求对象。您可以使用请求对象访问有关当前请求的各种信息,如输入数据,路由参数和请求方法等。这些功能使得编写更加灵活的控制器和中间件变得更加容易。