In meiner Validierungsfunktion für ein Drupal Forms-API-Formular versuche ich, die Kreditkarte des Benutzers zu belasten. Wenn es gelingt, möchte ich die Referenznummer an die Submit-Funktion übergeben, damit sie dort verwendet werden kann. Was ist der beste Weg, dies zu tun?Weitergabe von Informationen aus einer Drupal Forms-API-Validierungsfunktion an eine Übergabefunktion
3
A
Antwort
3
Die documentation sagt dies:
Beachten Sie, dass wie von Drupal 6, können Sie auch einfach beliebige Variablen in $ form speichern [ ‚# foo‘] statt, solange ‚#foo‘ nicht in Konflikt mit irgend andere interne Eigenschaft der Formular-API.
So könnte man so etwas tun:
function form($form_state) {
//in your form definition function:
$form['#reference_number'] = 0;
}
function form_validate($form, &$form_state) {
//try to charge card ...
if ($card_charged) {
$form_state['values']['#reference_number'] = $reference_number;
}
}
function submit_form($form, &$form_state) {
if (isset($form_state['values']['#reference_number'])) {
$reference_number = $form_state['values']['#reference_number'];
//do whatever you want
}
}
+4
Die Variable $ form_state ist definitiv der Ort, an dem Sie diese Informationen speichern möchten - genau das, wofür sie gedacht ist, und (amüsanterweise) war die Kreditkartenprüfung während der Validierung einer der Anwendungsfälle, die zur Rechtfertigung des Designs des aktuellen verwendet wurden Validierung/Einreichung Workflow. – Eaton
Hrrm. Ich erkannte, dass ich die Frage, die du gestellt hast, überhaupt nicht beantwortet habe. Es sollte jetzt etwas mehr auf das Problem zutreffen. – jergason