我可以使用Request::input()
或Request::all()
访问请求参数。
问题是我的请求包括GET和POST参数,但只有GET用于计算签名。
有没有办法从Laravel 5.1中的请求中只检索一组GET或一组POST参数?
或者使用$ _GET和$ _POST是我唯一的选择吗?
谢谢。
答案 0 :(得分:6)
您可以使用 Request :: query()仅获取 GET 参数。请记住,对于从GET获取的参数顺序没有保证一致性,因此您可能需要在计算签名之前对数组进行排序 - 具体取决于您如何计算签名。
答案 1 :(得分:3)
如果您需要直截了当的话,可以使用全局帮助器:
$pathData = request()->path(); <br />
$queryData = request()->query(); <br />
$postData = array_diff(request()->all(), request()->query());
答案 2 :(得分:1)
按照以下说明使用您自己的扩展Laravel Request类:
https://stackoverflow.com/a/30840179/517371
然后,在您自己的Request类中,从input()
复制Illuminate\Http\Request
方法并删除+ $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 /任何输入源中的参数。