重力形式 - 将值与另一个字段进行比较

问题描述 投票:0回答:2

希望有人能对此有所启发。我在重力表格中设置了一个注册表,用于学生注册。根据法律,学生监护人/家长需要对 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 );

“gform_field_validation_12_3”中的“12”代表我的form_id,“3”代表监护人/家长field_id

“$master = rgpost( 'input_11' );”中的“11”代表我的学生电子邮件 field_id

很简单,即使我在两个字段中具有相同的电子邮件,也不会验证字段并提交表单....

forms validation compare field gravity
2个回答
0
投票

如果启用了电子邮件确认,您需要更改此行:

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

对此:

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

问题是,当启用电子邮件确认时,$value 是一个数组而不是字符串。您只需从数组中获取第一个值即可,它应该按预期工作。

如果您不想为了解所有这些而烦恼,请随意使用我刚刚编写的这段代码。它还将处理多个字段和多组“唯一”字段。

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


0
投票

我认为你应该尝试看看这个插件:https://gravityextra.com/gravity-forms-advanced-field-comparison-premium-add-on/。谢谢。

© www.soinside.com 2019 - 2024. All rights reserved.