如何修改 Request $request 的值?

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

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

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

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

FastAdmin 开源框架
本帖已被设为精华帖!
本帖由系统于 4年前 自动加精
《L04 微信小程序从零到发布》
从小程序个人账户申请开始,带你一步步进行开发一个微信小程序,直到提交微信控制台上线发布。
《L02 从零构建论坛系统》
以构建论坛项目 LaraBBS 为线索,展开对 Laravel 框架的全面学习。应用程序架构思路贴近 Laravel 框架的设计哲学。
讨论数量: 9

常用请求输入的方法

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

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

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

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

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

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

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

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

7年前 评论

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

7年前 评论

@fantiq , 可行,非常感谢。

7年前 评论

常用请求输入的方法

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

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

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

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

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

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

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