Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 重力表单自定义验证过滤器_Php_Wordpress_Gravity_Gravity Forms Plugin - Fatal编程技术网

Php 重力表单自定义验证过滤器

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

我有一个函数,可以通过第三方服务处理销售,处理结果并返回一个状态为“成功”或“无效”的数组。此销售调用使用应用于特定表单的gform_after_提交钩子进行

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

我在函数中声明变量,如下所示:

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()
函数中