【发布时间】:2016-08-17 04:27:15
【问题描述】:
我需要像这样更改请求参数的值:
$request->name = "My Value!";
我使用此代码但不起作用:
$request->offsetSet('img', $img);
【问题讨论】:
-
Laravel change input value 的可能重复项 - 答案在对首要问题的评论中。
标签: laravel
我需要像这样更改请求参数的值:
$request->name = "My Value!";
我使用此代码但不起作用:
$request->offsetSet('img', $img);
【问题讨论】:
标签: laravel
尝试:
$requestData = $request->all();
$requestData['img'] = $img;
另一种方法:
$request->merge(['img' => $img]);
感谢@JoelHinz。
如果要添加或覆盖嵌套数据:
$data['some']['thing'] = 'value';
$request->merge($data);
如果你不注入Request $request对象,你可以使用全局的request()助手或者\Request::门面代替$request
【讨论】:
Request 源代码,我可以看到这些方法。谢谢。
使用merge():
$request->merge([
'user_id' => $modified_user_id_here,
]);
简单!无需将整个$request->all() 转移到另一个变量中。
【讨论】:
如果需要自定义请求
$data = $request->all();
你可以传递字段的名称和值
$data['product_ref_code'] = 1650;
最后通过新的请求
$last = Product::create($data);
【讨论】:
使用加法
$request->request->add(['img' => $img]);
【讨论】:
如果你需要更新请求中的某个属性,我建议你使用 Laravel 使用的 Request 类中的 replace 方法
$request->replace(['property to update' => $newValue]);
【讨论】:
如果您使用自定义请求进行验证、替换数据进行验证或设置默认数据(用于复选框或其他),请使用覆盖方法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'),
]);
}
}
我希望这些信息对某人有用。
【讨论】:
对我有用
$request = new Request();
$request->headers->set('content-type', 'application/json');
$request->initialize(['yourParam' => 2]);
检查输出
$queryParams = $request->query();
dd($queryParams['yourParam']); // 2
【讨论】:
这里的答案很好,但我需要替换 JSON 请求中的值。在深入研究代码之后,我想出了以下代码。如果我在做一些愚蠢的事情,请告诉我。
$json = $request->json()->all();
$json['field'] = 'new value';
$request->json()->replace($json);
【讨论】:
试试看:
$request["name"] = "My New Value";
$request["img"] = $img;
它在 Laravel 8 中工作。
【讨论】:
另外,请确保更新模型类。
Item
{
fillable=[
'img',
... // other attributes
];
}
【讨论】: