我需要像这样更改我的请求参数的值:
$request->name = "My Value!";
我使用此代码,但不起作用:
$request->offsetSet('img', $img);
我需要像这样更改我的请求参数的值:
$request->name = "My Value!";
我使用此代码,但不起作用:
$request->offsetSet('img', $img);
Answers:
用途merge()
:
$request->merge([
'user_id' => $modified_user_id_here,
]);
简单!无需将整个传递$request->all()
给另一个变量。
尝试:
$requestData = $request->all();
$requestData['img'] = $img;
另一种方法是:
$request->merge(['img' => $img]);
感谢@JoelHinz。
如果要添加或覆盖嵌套数据:
$data['some']['thing'] = 'value';
$request->merge($data);
如果您不注入Request $request
对象,则可以使用全局request()
帮助器或\Request::
外观来代替$request
Request
了L5的源代码,并且可以看到这些方法。谢谢。
如果您需要自定义请求
$data = $request->all();
您可以传递字段名称和值
$data['product_ref_code'] = 1650;
最后传递新要求
$last = Product::create($data);
如果您需要更新请求中的属性,建议您使用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'),
]);
}
}
我希望这些信息对某人有用。