我认为 CE 版中没有“标准”验证。
令我惊讶的是,您无法在某处定义验证并将其附加到字段。我有点预料到这一点,因为系统的其余部分结构非常好(模块、包等)
例如,我现在创建了一张 11 支票,这是一张针对荷兰银行帐号的非常具体的支票。为了让它工作,我做了以下事情(基于我在谷歌上搜索的例子):
我将银行帐户添加到工作室中的联系人,然后编辑 \custom\modules\Contacts\metadata\editviewdefs.php
我添加了以下片段:
'includes'=> array(
array('file'=>'custom/modules/Contacts/customJavascript.js')),
array (
0 =>
array(
'customCode' =>
'<input title="Save [Alt+S]" accessKey="S" onclick="this.form.action.value=\'Save\'; return check_custom_data();" type="submit" name="button" value="'.$GLOBALS['app_strings']['LBL_SAVE_BUTTON_LABEL']>',
),
1 =>
array(
'customCode' =>
'<input title="Cancel [Alt+X]" accessKey="X" onclick="this.form.action.value=\'index\'; this.form.module.value=\''.$module_name.'\'; this.form.record.value=\'\';" type="submit" name="button" value="'.$GLOBALS['app_strings']['LBL_CANCEL_BUTTON_LABEL'].'">'
)
),
在 customJavascript.js 中,我放置了以下代码:
function check_custom_data()
{
if (!eleven_check(document.getElementById("bankaccount_c").value)){
alert ('Bank account not valid');
return false;
} else {
return check_form('EditView');
}
function eleven_check(bankaccount) {
bankaccount=bankaccount.replace(/\D/, "");
charcount=bankaccount.length;
var som=0;
for (i=1; i<10; i++) {
getal=bankaccount.charAt(i-1);
som+=getal*(10-i);
}
if (som % 11==0 && charcount==9) {
return true
} else {
return false
}
}
}
此检查现在按我希望的方式工作,但我想知道这是否是添加验证的最佳方式。然而,这种添加验证的方式并不适合 PHP 验证,例如,如果我出于某种原因想要针对数据库中的某些数据进行验证,我将不得不使用 ajax 调用来完成。