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 duvar_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 drinnenMBvalidate()
Funktion dhglobal $status
, hab ich recht? Auch müssen Sie setzenglobal
Schlüsselwort drinnenfoo()
funktionieren auch– Samir Das
27. Mai 2015 um 11:33 Uhr