【问题标题】:Laravel overwrite value in requestLaravel 覆盖请求中的值
【发布时间】:2018-06-24 21:34:58
【问题描述】:

我很难覆盖现有的request 值。

下面的示例info 是我的输入数组,product 是我的输入数组键。

例如,

HTML

<input type="text" name="info[product]" value="10" />

PHP

echo request('info.product');

输出

10

编辑

print_r(request()->all());
Array
(
    [info] => Array
        (
            [product] => 10
        )
    [_method] => PUT
    [info.product] => 20
)

问题:但现在我需要使用 laravel 将这个默认的 10 值覆盖为 20

【问题讨论】:

  • 我已经测试了我的解决方案并且它有效。如果由于某种原因它对您不起作用,请显示dd(request()-&gt;all())的结果
  • 但是我们没有$request 参数。我们使用request() 代替。
  • 如果你不注入Request $request对象,只需使用request()全局帮助器或\Request::外观。
  • @AlexeyMezenin 我使用了request()-&gt;merge(['info.product' =&gt; 20]);,但没有任何反应。
  • 请说明你在哪里使用它以及dd(request()-&gt;all())的结果

标签: laravel


【解决方案1】:

使用merge() 方法:

$array['input']['product'] = 20;
request()->merge($array);

或者当您需要请求中的数据时执行此操作:

$data = request()->all();
$data['input']['product'] = 20;

【讨论】:

  • 这个逻辑从info数组中删除另一个元素。
  • @JaydeepMor 你说的是第一个解决方案还是第二个解决方案?
  • 关于第二个。
  • @JaydeepMor 刚刚尝试过$data = request()-&gt;all(); $data['input']['something'] = 40;dd($data) 显示productsomething
【解决方案2】:

试试这个:

Input::merge(['input.product' => 'new value']);

别忘了在顶部导入 Input 门面。(use Input;)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-03
    • 1970-01-01
    • 2014-09-25
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2023-03-27
    • 1970-01-01
    相关资源
    最近更新 更多