【问题标题】:Laravel 5 get only GET or POST params from requestLaravel 5 仅从请求中获取 GET 或 POST 参数
【发布时间】:2019-01-11 05:49:31
【问题描述】:

我可以使用Request::input() 或Request::all() 访问请求参数。

问题是我的请求同时包含 GET 和 POST 参数,但只有 GET 用于计算签名。

有没有办法从 Laravel 5.1 的请求中只检索一组 GET 或一组 POST 参数?

或者使用 $_GET 和 $_POST 是我唯一的选择?

谢谢。

【问题讨论】:

    标签: php laravel request laravel-5


    【解决方案1】:

    您可以使用 Request::query() 仅获取 GET 参数。请记住,您从 GET 获得的参数顺序无法保证一致性,因此您可能需要在计算签名之前对数组进行排序 - 取决于您计算签名的方式。

    【讨论】:

    • 没关系,参数按照签名校验的方式排序。一旦我回到我的mac,让我检查一下。关于仅提取 POST 参数的任何想法?
    • 是的。 Request::query() 完美运行。非常感谢。
    【解决方案2】:

    如果你需要一些简单的东西,你可以使用全局帮助器:

    $pathData = request()->path(); <br />
    $queryData = request()->query(); <br />
    $postData = array_diff(request()->all(), request()->query());
    

    https://laravel.com/docs/5.6/requests

    【讨论】:

    • 也许你的意思不是要包含那些
      标签?
    【解决方案3】:

    按照这些说明使用您自己的扩展 Laravel Request 类:

    https://stackoverflow.com/a/30840179/517371

    然后,在您自己的 Request 类中,从 Illuminate\Http\Request 复制 input() 方法并删除 + $this-&gt;query-&gt;all():

    public function input($key = null, $default = null)
    {
        $input = $this->getInputSource()->all();
    
        return data_get($input, $key, $default);
    }
    

    宾果!现在在 POST 请求中,Request::query() 返回查询(URL)参数,而Request::input() 只返回来自表单/multipart/JSON/任何输入源的参数。

    【讨论】:

    • 我不明白为什么获取 post、get、query 变量会很痛苦! Laravel 使用了很多包,在它们之上创建了自己的包装器,但仍然很糟糕!
    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2011-12-16
    • 2020-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-23
    • 2015-11-01
    相关资源
    最近更新 更多