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
相关产品推荐
相关产品推荐

