Gravity Forms benutzerdefinierter Validierungsfilter

Lesezeit: 2 Minuten

Nietzsches Benutzer-Avatar
Nietzsche

Ich habe eine Funktion, die Verkäufe über einen Drittanbieterdienst verarbeitet, das Ergebnis verarbeitet und ein Array mit dem Status “Erfolg” oder “Ungültig” zurückgibt. Dieser Verkaufsanruf wird unter Verwendung des Hooks gform_after_submission durchgeführt, der auf das spezifische Formular angewendet wird.

Was ich tun muss, ist das Ergebnis “Success” oder “Invalid” im Array als Variable zu speichern, die ich später an eine Funktion übergeben kann, um das Kreditkartenfeld mit dem gform_validation-Hook zu validieren oder ungültig zu machen.

Ich deklariere die Variable in einer Funktion wie folgt:

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

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

Wenn ich die Variable $status innerhalb der Funktion drucke, zeigt sie entweder Success oder Invalid an, wie es sollte.

Hier ist eine andere Funktion, bei der ich diese an gform_validation übergebene Variable verwenden muss, die jedes Mal fehlschlägt, unabhängig von Erfolg oder ungültigem Ergebnis:

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

Ich habe versucht, die Variable auf verschiedene Arten zu übergeben, über Globals und Sitzungen usw.

Ich bin neu in der GF-Entwicklung und bin mir sicher, dass mir etwas fehlt. Ich würde mich über jede Richtung freuen.

  • Wo bist du vorbeigekommen? $status Variable in einer Callback-Funktion ? hast du var_dump($validation_result) variabel ?

    – Touqeer Shafi

    27. Mai 2015 um 4:37 Uhr

  • Ich gehe davon aus, dass Sie die Variable durch Hinzufügen global gemacht haben global Schlüsselwort drinnen MBvalidate() Funktion dh global $status , hab ich recht? Auch müssen Sie setzen global Schlüsselwort drinnen foo() funktionieren auch

    – Samir Das

    27. Mai 2015 um 11:33 Uhr


Benutzeravatar von Niklas Brunberg
Niklas Brünberg

Das gform_after_submission Aktionshaken läuft nach gform_validation.

Jedenfalls vorausgesetzt, Sie können Haken finden das früher ausgeführt wird, was ich tun würde, ist eine eindeutige Variable für jedes übermittelte Formular mit dem zu speichern Transienten-API‘s set_transient() und get_transient() Funktionen. Beispielsweise können Sie in jedem Formular ein verstecktes Feld erstellen, das Sie mit einer zufälligen ID füllen. Verwenden Sie diese zufällige ID als Schlüssel zum Speichern und Abrufen des Erfolgs/Ungültig-Ergebnisses.

Benutzeravatar von Sergei Kovalenko
Sergej Kowalenko

$status hier ist eine lokale Variable, die noch nie definiert wurde, bevor Sie versuchen, sie in einer if-Bedingung zu verwenden. Also immer null. Vielleicht hast du es verpasst

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

oder so ähnlich, bevor Sie den Zustand überprüfen.

1389680cookie-checkGravity Forms benutzerdefinierter Validierungsfilter

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy