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

如何将Formidable Forms默认逗号分隔ID转为字符串数组同步至Brevo

问题:Formidable Forms多选字段转数组传递至Brevo API

我正在尝试通过API将Formidable Forms的数据同步到Brevo,初始代码如下:

{ 
  "updateEnabled": true,
  "email": "[376]",
  "emailBlacklisted": false, 
  "smsBlacklisted": false,
  "attributes": {
      "FIRSTNAME": "[374]",  
      "LASTNAME": "[375]",   
      "GENRE": ["[385]"]
       
  },
  "listIds": [2]   
}

未添加GENRE字段前代码运行正常。ID为385的字段是Formidable Forms的多选问题,选项与Brevo的GENRE属性完全匹配。Formidable Forms默认以逗号分隔的字符串返回多选字段值,但Brevo要求传入字符串数组。目前只有选择第一个选项时数据能正常传递,选其他选项时,其他字段数据正常,但GENRE字段为空。

我试过上述代码,也尝试用.split()方法转换数组:

let selectedGenres = formData[385]; 
let genreArray = selectedGenres.split(',').map(item => item.trim());

let apiRequest = {
  "updateEnabled": true,
  "email": "[376]",
  "emailBlacklisted": false,
  "smsBlacklisted": false,
  "attributes": {
    "FIRSTNAME": "[374]",
    "LASTNAME": "[375]",
    "GENRE": genreArray 
  },
  "listIds": [2]
};

但问题仍未解决,请问如何实现将所有选中的流派以数组形式传递?


解决方案

1. 先确认字段值的实际格式

Formidable Forms的多选字段在不同场景下返回值格式有差异:

  • 前端提交时可能是逗号分隔字符串
  • 后端钩子(如frm_after_create_entry)中,字段值可能直接是数组

先打印调试确认formData[385]的类型和内容:

console.log(typeof formData[385], formData[385]);

2. 兼容多格式的转换逻辑

不管字段返回的是数组还是逗号分隔字符串,统一处理成符合Brevo要求的字符串数组:

let selectedGenres = formData[385];
let genreArray = [];

// 处理数组类型的返回值
if (Array.isArray(selectedGenres)) {
  genreArray = selectedGenres.map(item => item.trim());
} 
// 处理逗号分隔的字符串类型
else if (typeof selectedGenres === 'string' && selectedGenres.trim() !== '') {
  genreArray = selectedGenres.split(',').map(item => item.trim());
}
// 未选任何选项时返回空数组
else {
  genreArray = [];
}

// 构造API请求体,注意直接取formData中的实际值,不要用占位符字符串
let apiRequest = {
  "updateEnabled": true,
  "email": formData[376].trim(),
  "emailBlacklisted": false,
  "smsBlacklisted": false,
  "attributes": {
    "FIRSTNAME": formData[374].trim(),
    "LASTNAME": formData[375].trim(),
    "GENRE": genreArray 
  },
  "listIds": [2]
};

3. 关键修正点

  • 移除占位符字符串:之前代码中"[376]"这类写法是错误的,必须直接取formData对应字段的实际值,否则Brevo无法解析有效数据
  • 处理边界情况:覆盖未选任何选项、单个选项、多个选项的场景,避免传递无效值导致API报错
  • 匹配选项值:确保Formidable Forms中多选选项的后台存储值和Brevo的GENRE属性选项完全一致(不是前端显示文本)

内容的提问来源于stack exchange,提问作者Danielle Potter

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 00:00:16