我需要像下面这样改变请求参数的值:
$request->name = "My Value!";
我使用这个代码,但是不起作用:
$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:: facade 而不是 $request
Request $request
request()
\Request::
$request
如果您需要自定义请求
$data = $request->all();
可以传递字段的名称和值
$data['product_ref_code'] = 1650;
最后通过新的请求
$last = Product::create($data);
使用 merge():
merge()
$request->merge([ 'user_id' => $modified_user_id_here, ]);
很简单! 不需要将整个 $request->all()转移到另一个变量。
$request->all()
点击这里阅读更多关于 Laravel 的 merge():
Https://laravel.com/docs/collections#method-merge
对我有用
$request = new Request(); $request->headers->set('content-type', 'application/json'); $request->initialize(['yourParam' => 2]);
检查输出
$queryParams = $request->query(); dd($queryParams['yourParam']); // 2
如果使用自定义验证请求、替换验证数据请求或设置默认数据请求(对于复选框或其他请求) ,请使用重写方法 prepareForValidation()。
prepareForValidation()
namespace App\Http\Requests\Admin\Category; class CategoryRequest extends AbstractRequest { protected function prepareForValidation() { if ( ! $this->get('url')) { $this->merge([ 'url' => $this->get('name'), ]); } $this->merge([ 'url' => \Str::slug($this->get('url')), 'active' => (int)$this->get('active'), ]); } }
我希望这个信息对某些人有用。
这里的答案很棒,但是我需要替换 JSON 请求中的一个值。在对代码进行了一些深入研究之后,我得出了以下代码。如果我做了什么蠢事就告诉我。
$json = $request->json()->all(); $json['field'] = 'new value'; $request->json()->replace($json);
如果需要更新请求中的属性,我建议您使用 Laravel 使用的 Request 类中的 place 方法
$request->replace(['property to update' => $newValue]);
使用 add
$request->request->add(['img' => $img]);
试试这个:
$request["name"] = "My New Value"; $request["img"] = $img;
这招在 Laravel 8中管用。
另外,确保更新模型类。
Item { fillable=[ 'img', ... // other attributes ]; }
在更新对象项目的情况下,您可以写下面的行
$Obj = $request->data; $Obj['item'] = value;