如何在laravel中更改请求参数的值

时间:2016-04-23 15:06:11

标签: laravel

我需要像这样更改我的请求参数的值。

$request->name = "My Value!"

我使用此代码但不起作用。

$request->offsetSet('img', $img);

9 个答案:

答案 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;