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

标签 php wordpress gravity gravity-forms-plugin

我有一个函数可以通过第三方服务处理销售、处理结果并返回状态为“成功”或“无效”的数组。此销售电话是使用应用于特定表单的 gform_after_submission Hook 进行的。

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

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

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' );

我已经尝试通过多种不同的方式传递变量,通过全局变量和 session 等。

我是 GF 开发的新手,所以我确信我遗漏了一些东西。如果有任何指示,我将不胜感激。

最佳答案

gform_after_submission 操作 Hook 在 gform_validation 之后运行。

无论如何,假设你能find a hook如果运行得更早,我要做的是使用 Transients API 为每个提交的表单存储一个唯一变量的 set_transient()get_transient() 函数。例如,您可以在每个用 random ID 填充的表单中创建一个隐藏字段.使用此随机 ID 作为 key 来存储和检索成功/无效结果。

关于php - 重力形式自定义验证过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30353054/

相关文章:

ios - 不断改变重力方向使物体随机移动

java - 如何以编程方式在 RecyclerView 中设置 cardView 重力

php - Laravel 命令不保存和更新到数据库

javascript - 保留 jquery ui 选项卡的状态

css - 一段时间后代码恢复到原始主题

Wordpress 混合内容错误(谷歌字体相关)

php - mysql fetch array 如果没有结果显示消息

php - Magento Cron Tab 作业时区

php - 从 WooCommerce 中的特定产品属性术语名称获取产品

Android - TextView 文本从其首字母居中