Ho una funzione che elabora le vendite tramite un servizio di terze parti, elabora il risultato e restituisce un array con lo stato "Success" o "Invalid". Questa chiamata di vendita viene effettuata utilizzando l'hook gform_after_submission applicato al modulo specifico.Filtro di convalida personalizzato Gravity Form
Quello che devo fare è archiviare il risultato "Success" o "Invalid" nell'array come variabile che successivamente posso passare a una funzione per convalidare o invalidare il campo della carta di credito, usando gform_validation hook.
che sto dichiarando la variabile in una funzione, in questo modo:
function foo {
...code to sell product through API...
$status = $checkoutShoppingCartRequest['Result']['Status'];
}
Quando ho stampare lo stato $ variabile all'interno della funzione, si sta mostrando successo o non valido come dovrebbe.
Ecco un'altra funzione in cui ho bisogno di usare questa variabile, passata a gform_validation, che non riesce ogni volta a prescindere dal successo o il risultato non valido:
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');
ho provato passando la variabile di un certo numero di modi diversi, tramite globals e sessioni, ecc.
Sono nuovo nello sviluppo di GF quindi sono sicuro che mi manca qualcosa. Gradirei qualsiasi direzione.
Dove sei passato? Variabile '$ status' in una funzione di callback? hai la variabile 'var_dump ($ validation_result)'? –
Suppongo che tu abbia reso la variabile globale aggiungendo la parola chiave 'global' all'interno della funzione 'MBvalidate()', ad esempio 'global $ status', sono corretto? Dovrai anche mettere la parola chiave 'global' all'interno della funzione 'foo()' – Samir