如何修改 Request $request 的值?

场景:用户界面有一个 ver 版本的字段,是自动的,由用户可选,用户提交后,根据 body 内容判断是 V1 还是 V2,并给 $_POST['ver] 赋值。

办法:经过搜索,发现 Request 有一个 merge 方法,可以修改 Request 的值。

$request->merge(['ver' => 'V1']);

如果有更好的办法欢迎一起讨论。

FastAdmin 开源框架
本帖已被设为精华帖!
本帖由系统于 3年前 自动加精
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L05 电商实战》
从零开发一个电商项目,功能包括电商后台、商品 & SKU 管理、购物车、订单管理、支付宝支付、微信支付、订单退款流程、优惠券等
讨论数量: 9

常用请求输入的方法

// 合并输入,如果有相同的key,用户输入的值会被替换掉,否则追加到 input
$request->merge(['foo' => 'bar', ....]);

// 替换所有输入
$request->replace([..])

// 设置某参数,如果存在则替换,否则新增
$request['foo'] = 'bar';

// 移除某参数
unset($request['foo'])
6年前 评论
ieras 4年前

Laravel修改Request的值有好几个办法,可以去查看源码:

  • 直接set
    $request->foo = 'bar'

  • RequestBag
    Request实例上有一个$request属性,这是一个Symfony\Component\HttpFoundation\ParameterBag的实例,可以这样:
    $request->request->set('foo', 'bar')
6年前 评论

@翁航 ,刚刚测试了一下你的方法,使用 $request->get('ver') 无法取回值。

6年前 评论

试试 Illuminate\Http\Request::replace($input)
https://laravel.com/api/5.1/Illuminate/Htt...

6年前 评论

@fantiq , 可行,非常感谢。

6年前 评论

常用请求输入的方法

// 合并输入,如果有相同的key,用户输入的值会被替换掉,否则追加到 input
$request->merge(['foo' => 'bar', ....]);

// 替换所有输入
$request->replace([..])

// 设置某参数,如果存在则替换,否则新增
$request['foo'] = 'bar';

// 移除某参数
unset($request['foo'])
6年前 评论
ieras 4年前
$request->offsetSet(key,value);
6年前 评论

$request->attritube->set($key, $value)

6年前 评论
    $request->request->add([
        "scope" => "*",
        "client_secret" => $client->secret,
        "client_id" => $client->id,
        "grant_type" => "password",
    ]);
6年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!