You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Laravel表单提交时将fields数组转JSON追加到请求参数的问题

实现代码

直接遍历$request->fields的键值对,逐个转JSON后追加到$data数组即可,示例如下:

public function store(Request $request)
{
    $data = $request->all();

    // 遍历地址字段组
    foreach ($request->fields as $fieldName => $addressItem) {
        // 转JSON字符串,JSON_UNESCAPED_UNICODE避免特殊字符转义
        $data[$fieldName] = json_encode($addressItem, JSON_UNESCAPED_UNICODE);
    }

    // 你需要自行补充其他字段的赋值逻辑,比如form_secret_token、itoken、拼接address文本
    // $data['form_secret_token'] = '你的业务生成的token';
    // $data['itoken'] = '你的业务生成的itoken';
    // $data['address'] = "{$data['fields']['field_858']['addressone']}, {$data['fields']['field_858']['city']} {$data['fields']['field_858']['state']} {$data['fields']['field_858']['postcode']}";

    dd($data);
}

错误原因说明

你之前报illegal offset type错误,大概率是使用array_keys()时直接把整个键数组作为了$data的下标,数组类型不能作为数组的键名,所以触发了该报错。用foreach逐个取出字符串类型的字段名作为下标,就不会出现该问题。

补充说明

json_encode默认生成的是符合标准的双引号格式JSON,你示例中的单引号格式不符合JSON规范,后续解析会出错,不建议自行替换为单引号。如果你后续需要读取该字段,Laravel模型可以配置$casts属性自动完成JSON和数组的互转,无需手动处理编解码。

内容的提问来源于stack exchange,提问作者saj sta

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 01:36:05