【发布时间】: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
我可以使用Request::input() 或Request::all() 访问请求参数。
问题是我的请求同时包含 GET 和 POST 参数,但只有 GET 用于计算签名。
有没有办法从 Laravel 5.1 的请求中只检索一组 GET 或一组 POST 参数?
或者使用 $_GET 和 $_POST 是我唯一的选择?
谢谢。
【问题讨论】:
标签: php laravel request laravel-5
您可以使用 Request::query() 仅获取 GET 参数。请记住,您从 GET 获得的参数顺序无法保证一致性,因此您可能需要在计算签名之前对数组进行排序 - 取决于您计算签名的方式。
【讨论】:
如果你需要一些简单的东西,你可以使用全局帮助器:
$pathData = request()->path(); <br />
$queryData = request()->query(); <br />
$postData = array_diff(request()->all(), request()->query());
【讨论】:
按照这些说明使用您自己的扩展 Laravel Request 类:
https://stackoverflow.com/a/30840179/517371
然后,在您自己的 Request 类中,从 Illuminate\Http\Request 复制 input() 方法并删除 + $this->query->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/任何输入源的参数。
【讨论】: