我们正在开发一个基于 SilverStripe 的网站,该网站与 SugarCRM 数据库相连。
我们创建了一个CheckboxSet
具有多个值的表单并将其存储为一个名为的变量$data['Interessen']
$set_entry_parameters = array(
"session" => $session_id,
"module_name" => "Contacts",
"name_value_list" => array(
array(
"name" => "interessen_c",
"value" => $data['Interessen']['fotografie']
),
array(
"name" => "interessen_c",
"value" => $data['Interessen']['dance']
)
)
);
现在最后一个数组 with"interessen_c"
覆盖了以前的值。我们想一次添加多个值。
这怎么可能?
如果$data['Interessen']的内容只能具有固定的可能性列表中的值,我建议将字段interessen_c设为类型multienum
(“Multi-Selection Dropdown”字段)。
对于该字段,在 Sugar 中创建所有可用项目的列表(例如,在 Studio 中或通过代码手动创建 app_list_strings 条目)。
然后,Sugar 将支持该字段中的多个值并很好地显示它们。
如果您的程序通过与 Sugar REST API 通信来写入数据,那么您只需将$data['Interessen']
数组作为其值传递interessen_c
,Sugar 就会知道如何处理它。
如果您的程序直接将数据写入数据库中的interessen_c字段,则字段内容必须遵循以下格式:
^value1^,^value2^,^value3^
因此,^
围绕每个值和所有项目被分隔,
这是如何在 PHP 中将数组值转换为此类字符串的示例:
$interessen = array();
foreach ($data['Interessen'] as $value) {
// add value surrounded by ^ to array
$interessen[] = "^$value^";
}
// transform values in array to string with items being separated by ,
$interessen = implode(',', $interessen);
边注:
在 Sugar 中,可以使用encodeMultienumValue($arr)
和unencodeMultienum($string)
将数组转换为 db-string 格式并返回。
这两个函数都定义在include/utils.php
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句