我对 SugarCRM 模块开发完全陌生,但是我对 PHP、ajax 和数据库编程有很好的了解。
这是我的任务:我被要求从客户端模块创建对自定义字段的限制。有一个称为标识号的自定义字段,我需要做的是避免基于该字段将新客户端保存到数据库中,换句话说,客户端必须是唯一的。它必须显示一个弹出窗口,上面写着“那个客户端已经存在”
我对 SugarCRM 模块开发完全陌生,但是我对 PHP、ajax 和数据库编程有很好的了解。
这是我的任务:我被要求从客户端模块创建对自定义字段的限制。有一个称为标识号的自定义字段,我需要做的是避免基于该字段将新客户端保存到数据库中,换句话说,客户端必须是唯一的。它必须显示一个弹出窗口,上面写着“那个客户端已经存在”
将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
之后使用逻辑挂钩从服务器端保存检查重复项。
您可以通过以下代码创建自定义重复检查:
$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 将列出重复项,您可以选择使用重复项或忽略。