我是SugarCRM模块开发的新手,但我对PHP,ajax和数据库编程非常了解。
这是我的任务:我被要求从客户端模块创建对自定义字段的限制。 有一个称为标识号的自定义字段,我需要做的是避免基于该字段将新客户端保存到数据库中,换句话说,客户端必须是唯一的。它必须显示一个弹出窗口,说“客户端已存在”
答案 0 :(得分:4)
将editviewdefs.php
帐户复制到custom
文件夹,并将id_number
的自定义字段定义更改为此
array(
'name' => 'id_number',
'displayParams' =>
array (
'field' =>
array (
'onChange' => 'check_is_duplicate(this);',
),
),
),
创建一个javascript函数check_is_duplicate
function check_is_duplicate(obj) {
// Call a script via Ajax. Pass values for id and id_number with the request.
if (o.responseText > 0) {
alert('duplicate');
document.getElementById('SAVE').disabled = true;
} else {
document.getElementById('SAVE').disabled = false;
}
}
您必须创建将通过ajax请求调用的脚本 在该脚本中,您必须运行类似 -
的查询SELECT COUNT(*) AS count FROM accounts
WHERE deleted = 0 AND id != {$record} AND id_number = {$id_number}
执行查询并返回计数。
然后使用beforeSave
逻辑挂钩从服务器端保存检查重复项。
答案 1 :(得分:2)
您可以通过以下代码创建自定义重复检查:
$dictionary['Account']['duplicate_check']['FilterDuplicateCheck']['filter_template'] = array(
array(
'$and' => array(
array('identification_number' => array('$equals' => '$identification_number')),
),
),
);
在文件中添加以下代码:/custom/Extension/modules/Accounts/Ext/Vardefs/duplicate_check.php。 然后,执行快速修复/重建。
工作原理: 当您输入标识号并按保存时,SugarCRM将执行重复检查。如果找到重复项,SugarCRM将列出重复项,您可以选择使用副本或忽略。