2015-06-23 46 views
0

希望有人能够对此有所了解。我在Gravity Forms中为注册学生设置了注册表单。根据法律规定,学生监护人/家长需要同意18岁以下的学生。我已经设置了一个有条件的“监护人/家长”电子邮件字段,仅显示该学生不满18岁。重力形式 - 将值与其他字段进行比较

所以X2电子邮件字段出现在表格中,一个给学生,另一个给监护人/家长。提交表格后,激活邮件仅发送给监护人电子邮件地址。

我的问题是,目前相同的电子邮件地址可以在监护人/家长和学生的电子邮件兜售。我想验证2个电子邮件字段并确保它们不相同。

我尝试了以下方法,但它根本没有效果。

add_filter('gform_field_validation_12_3', function ($result, $value, $form, $field) { 
    $master = rgpost('input_11'); 
    if ($result['is_valid'] && $value == $master) { 
     $result['is_valid'] = false; 
     $result['message'] = 'Please enter a different email.'; 
    } 

    return $result; 
}, 10, 4); 

的 “12” 中的 “gform_field_validation_12_3” 代表我form_id和 “3” 表示监护人/父母在FIELD_ID

的 “11”, “$主= rgpost( 'input_11');”代表我的学生的电子邮件FIELD_ID

它简单不验证等领域,并提交即使我有在这两个领域相同的电子邮件的形式....

+0

你确定你的身份证号码正确吗?我试过这个相同的代码,只更改表单ID和字段ID,并且按预期工作。你也可以尝试一个简单的形式,以确保没有其他干扰。 – David

+0

得到它的工作,似乎验证不喜欢当电子邮件验证(电子邮件输入两次)打开。有没有办法解决这个问题,仍然有电子邮件验证? – Shaun

回答

0

如果电子邮件确认已启用,你要改变这条线:

if ($result['is_valid'] && $value == $master) { 

这样:

if ($result['is_valid'] && $value[0] == $master) { 

的问题是,启用电子邮件确认时,在$值是一个数组不是字符串。你可以从数组中获得第一个值,它应该按预期工作。

如果您不想大惊小怪要知道所有这些,请随意使用我刚刚写的这段代码。它还将处理多个字段和多组“独特”字段。

http://gravitywiz.com/gravity-forms-require-unique-values-for-different-fields/

+0

辉煌!谢谢,那就是诀窍。感谢您的帮助David! – Shaun

相关问题