我需要像这样更改我的请求参数的值。
$request->name = "My Value!"
我使用此代码但不起作用。
$request->offsetSet('img', $img);
答案 0 :(得分:112)
尝试:
$requestData = $request->all();
$requestData['img'] = $img;
另一种方法:
$request->merge(['img' => $img]);
感谢@JoelHinz。
如果要添加或覆盖嵌套数据:
$data['some']['thing'] = 'value';
$request->merge($data);
如果您不注入Request $request
个对象,则可以使用全局request()
帮助器或\Request::
外观而不是$request
答案 1 :(得分:14)
使用merge():
$request->merge([
'user_id' => $modified_user_id_here,
]);
就这么简单!无需将整个$request->all()
转移到另一个变量。
答案 2 :(得分:5)
如果您需要自定义请求
$data = $request->all();
您可以传递字段名称和值
$data['product_ref_code'] = 1650;
并最终传递新请求
$last = Product::create($data);
答案 3 :(得分:3)
如果您需要更新请求中的属性,建议您使用Laravel使用的Request类中的replace方法
$request->replace(['property to update' => $newValue]);
答案 4 :(得分:3)
使用添加
$request->request->add(['img' => $img]);
答案 5 :(得分:2)
很好的答案,但是我需要替换JSON请求中的值。在深入研究代码之后,我想到了以下代码。让我知道我是否在做蠢事。
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
答案 6 :(得分:1)
对我有用
$request = new Request();
$request->headers->set('content-type', 'application/json');
$request->initialize(['yourParam' => 2]);
检查输出
$queryParams = $request->query();
dd($queryParams['yourParam']); // 2
答案 7 :(得分:1)
如果您使用自定义请求进行验证,替换数据进行验证或设置默认数据(用于复选框或其他),请使用覆盖方法prepareForValidation()。
命名空间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'),
]);
}
}
我希望有人会对此信息有用。
答案 8 :(得分:0)
我认为这是在当前输入您的价值和关键的最佳方法 请求实例
$requestData['price'] = $price;