2009-07-30 4 views
3

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

+0

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

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