拉拉维尔合并/替换请求 - 文件


Laravel Merge / Replace Request - Files

我一直在Request类上使用merge()replace()方法。它大部分时间都在工作,但我的印象是merge()会添加或覆盖现有参数,而replace()会清除所有参数并添加传入的新参数数组。但是,它们都按照我想象merge()的工作方式工作。我在这里错过了什么吗?

另外,有没有办法merge()replace()文件,同时仍然使用hasFile()方法?基本上,我正在做的是调整来自 API 调用的请求。因此,我将请求中的文件作为一个参数接收,并将其重新映射到另一个参数名称,使其与后端的期望相匹配。使用任一方法后,当我执行dd($request->all())时,请求一目了然,但hasfile()返回 false。

我确实对Http'Illuminate'Request类进行了一些深入研究,我想我发现问题是我的文件没有被设置为$_FILES。所以我想它确实按预期工作。

话虽如此,我有没有特别的方法可以完成我想做的事情?

回答问题的第一部分:

我直接去了源头,确认功能确实不同:

合并调用使用 array_replace (php.net( 的 add 函数:

public function add(array $parameters = array())
{
    $this->parameters = array_replace($this->parameters, $parameters);
}

替换

只是替换整个变量(数组(

public function replace(array $parameters = array())
{
    $this->parameters = $parameters;
}

所以你的第一印象实际上是正确的。