php – 重力格式自定义验证过滤器

前端之家收集整理的这篇文章主要介绍了php – 重力格式自定义验证过滤器前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我有一个通过第三方服务处理销售的功能,处理结果并返回一个数组,状态为“成功”或“无效”.此销售电话是使用应用于特定表单的gform_after_submission钩子进行的.

我需要做的是将“成功”或“无效”结果存储在数组中,作为一个变量,稍后可以使用gform_validation钩子传递给函数来验证或使信用卡字段无效.

我在函数中声明变量,就像这样:

function foo { 
...code to sell product through API...

$status = $checkoutShoppingCartRequest['Result']['Status'];
}

当我在函数中打印变量$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之后运行.

无论如何,假设您可以使用更早的find a hook,那么我将使用Transients API的set_transient()和get_transient()函数为每个提交的表单存储一个唯一的变量.例如,您可以在使用random ID填充的每个表单中创建一个隐藏字段.使用该随机ID作为存储和检索“成功/无效”结果的键.

猜你在找的PHP相关文章