Php 重力表单自定义验证过滤器
我有一个函数,可以通过第三方服务处理销售,处理结果并返回一个状态为“成功”或“无效”的数组。此销售调用使用应用于特定表单的gform_after_提交钩子进行 我需要做的是将“Success”或“Invalid”结果存储在数组中,作为一个变量,稍后我可以使用gform_validation hook将其传递给函数,以验证或使信用卡字段无效 我在函数中声明变量,如下所示:Php 重力表单自定义验证过滤器,php,wordpress,gravity,gravity-forms-plugin,Php,Wordpress,Gravity,Gravity Forms Plugin,我有一个函数,可以通过第三方服务处理销售,处理结果并返回一个状态为“成功”或“无效”的数组。此销售调用使用应用于特定表单的gform_after_提交钩子进行 我需要做的是将“Success”或“Invalid”结果存储在数组中,作为一个变量,稍后我可以使用gform_validation hook将其传递给函数,以验证或使信用卡字段无效 我在函数中声明变量,如下所示: function foo { ...code to sell product through API... $status
function foo {
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['Status'];
}
当我在函数中打印变量$status时,它会像应该的那样显示Success或Invalid
下面是我需要使用此变量的另一个函数,该变量传递给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开发的新手,所以我肯定我错过了一些东西。我很感谢您的指导。
$status
这里有一个局部变量,在您尝试在if条件下使用它之前,它从未定义过。所以,它总是null
。
也许你错过了
$status = $validation_result['Result']['Status'];
或者在检查条件之前执行类似操作。提交后的
gform\u
操作挂钩在gform\u验证后运行
无论如何,假设您可以更早地运行它,我要做的是使用的set\u transient()
和get\u transient()
函数为每个提交的表单存储一个唯一的变量。例如,您可以在每个表单中创建一个隐藏字段,该表单使用。使用此随机ID作为密钥来存储和检索成功/无效结果。您在哪里传递的<代码>$status
回调函数中的变量?您是否有var\u dump($validation\u result)
变量?我假设您通过在MBvalidate()
函数(即global$status
)中添加global
关键字使变量成为全局变量,我是否正确?您还必须将global
关键字放入foo()
函数中