重力形式自定义验证过滤器



我具有通过第三方服务处理销售的功能,处理结果并返回具有状态"成功"或"无效"的数组。此销售电话是使用应用于特定表单的gform_after_submission钩进行的。

我需要做的是将"成功"或"无效"存储在数组中,作为一个变量,我可以使用gform_validation hook将其传递给函数以验证或无效。

我正在声明函数中的变量,例如:

function foo { 
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['Status'];
}

当我在功能中打印变量$状态时,它会显示成功或无效。

这是我需要使用此变量的其他功能,将其传递给gform_validation,无论成功或无效结果,每次都会失败:

function MBvalidate( $validation_result ) {
$form = $validation_result['form'];
if ( $status !== "Success") {
    $validation_result['is_valid'] = false;
    foreach( $form['fields'] as &$field ) {
        if ( $field->id == '34' ) {
            $field->failed_validation = true;
            $field->validation_message = 'Your credit card could not be processed.';
            break;
        }
    }
}
//Assign modified $form object back to the validation result
$validation_result['form'] = $form;
return $validation_result;
}
add_filter( 'gform_validation_47', 'MBvalidate' );

我尝试通过全球和会话等多种不同的方式传递该变量。

我是GF开发的新手,所以我敢肯定我缺少一些东西。我会感谢任何方向。

gform_after_submission操作钩在 gform_validation之后运行

无论如何,假设您可以找到较早运行的钩子,我要做的就是使用瞬态API的set_transient()get_transient()函数存储一个为每个提交的表单的唯一变量。例如,您可以以随机ID填充的每个形式创建一个隐藏的字段。使用此随机ID作为存储和检索成功/无效结果的键。

$status这是一个本地变量,在尝试在if条件下使用它之前,它从未定义过。因此,它总是null。也许你错过了

$status = $validation_result['Result']['Status'];

或类似的东西在检查条件之前。

相关内容

  • 没有找到相关文章

最新更新