如何更改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]);