Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何更改laravel中请求参数的值_Laravel - Fatal编程技术网

如何更改laravel中请求参数的值

如何更改laravel中请求参数的值,laravel,Laravel,我需要更改请求参数的值,如下所示: $request->name=“我的价值!”; 我使用此代码但不起作用: $request->offsetSet('img',$img); 尝试: $requestData = $request->all(); $requestData['img'] = $img; 另一种方法是: $request->merge(['img' => $img]); 感谢@JoelHinz的帮助 如果要添加或覆盖嵌套数据: $data['some']['

我需要更改请求参数的值,如下所示:

$request->name=“我的价值!”;
我使用此代码但不起作用:

$request->offsetSet('img',$img);
尝试:

$requestData = $request->all();
$requestData['img'] = $img;
另一种方法是:

$request->merge(['img' => $img]);
感谢@JoelHinz的帮助

如果要添加或覆盖嵌套数据:

$data['some']['thing'] = 'value';
$request->merge($data);

如果不注入
Request$Request
对象,如果需要自定义请求,可以使用全局
Request()
帮助程序或
\Request::
外观而不是
$Request

$data = $request->all();
您可以传递字段的名称和值

$data['product_ref_code'] = 1650;
并最终通过新的请求

$last = Product::create($data);
使用
merge()

简单!无需将整个
$request->all()
传输到另一个变量。

它对我有效

$request = new Request();
$request->headers->set('content-type', 'application/json');     
$request->initialize(['yourParam' => 2]);
检查输出

$queryParams = $request->query();
dd($queryParams['yourParam']); // 2

如果使用自定义验证请求、替换验证数据或设置默认数据(用于复选框或其他),请使用覆盖方法
preparefovalidation()


我希望这些信息对某些人有用。

这里的答案很好,但我需要替换JSON请求中的值。在对代码进行了一些深入研究之后,我提出了以下代码。如果我在做傻事,请告诉我

$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);

如果您需要更新请求中的属性,我建议您使用Laravel使用的request类中的replace方法

$request->replace(['property to update' => $newValue]);
使用add

$request->request->add(['img' => $img]);

错误:调用undefined method\Http\Request::put()put()是一个集合方法,$Request->all()返回一个数组。请求对象实际上有replace()和merge()方法。我通常更喜欢用那些。关于这个问题的答案,请参阅我的评论。@JoelHinz,我认为它们在Laravel5中不起作用,因为我看到很少有帖子中有人在使用这些方法时遇到问题。但是我已经研究了L5的
请求
源代码,我可以看到这些方法。谢谢,不用担心。不过,你的答案还是错的。replace()方法替换整个输入-如果您只想替换一个值,则需要合并()。答案可能重复-答案在顶部问题的注释中。请小心,replace方法会删除原始的重新测试数据,并用数组替换所有数据\Symfony\Component\HttpFoundation\ParameterBag第54行公共函数replace(数组$parameters=[]){$this->parameters=$parameters;}我想避免使用replace(),它可能会导致API出现一些非常恼人的错误。这就是我想要的,谢谢!
$request->replace(['property to update' => $newValue]);
$request->request->add(['img' => $img]);