it-swarm.com.de

Wie verwende ich den Form_submit-Hook?

Ich habe ein Formular, das automatisch von einem Inhaltstyp generiert wird. Ich möchte eine form_submit-Funktion ausführen, um einige Daten einzugeben/zu ändern, die in der Datenbank gespeichert werden sollen.

Der Inhaltstyp hat diese Felder bereits eingerichtet, aber ich möchte, dass sie in einer form_submit-Funktion und nicht über Benutzereingaben ermittelt werden.

Ich kann eine Formularübermittlungsfunktion erhalten, weiß jedoch nicht, wie ich dem übermittelten Wertearray hinzufügen kann, ohne die gesamte Abfrage selbst schreiben zu müssen. Welche Variablen muss ich erfassen und wie kann ich sie ändern, um dies zu tun?

Genauer gesagt ... im form_alter macht das, was ich will. $form["field_org_id"]["und"][0]['value']['#default_value'] = $org->id;

Aber wie mache ich das Äquivalent außerhalb der Site in form_submit? (Dies ist ein Formular zum Hinzufügen von Inhalten und in der Hoffnung, nicht die gesamte Abfrage neu zu schreiben.)

5
Damon
  1. Sie müssen hook_form_alter oder hook_form_FORM_ID_alter verwenden.
  2. Fügen Sie Ihren Submit-Handler wie folgt zu $ form ['# submit']$form['#submit'][]='my_submit'
  3. Und schreiben Sie Ihren Code:

    function my_submit($form, &$form_state) { 
      // your code
    }
    
23
jibran

Die Funktion FORM_FUNCTION_submit () wird automatisch ausgelöst, wenn das Formular mit der Präfixgeneratorfunktion gesendet wird:

function generate_special_form(){ // this function name is "FORM_FUNCTION" above
    $form = array();
    $form['field_org_id'] = array(
        '#type' => 'textfield',
        '#title' => 'Organisation',
    );
    $form['submit'] = array(
        '#type' => 'submit',
        '#value' => 'Submit',
    );
    return $form;
}

Wenn diese Funktion übermittelt, wird automatisch die Funktion generate_special_form_submit () mit 2 Parametern aufgerufen. Sie können die übermittelten Werte wie folgt abrufen:

function generate_special_form_submit($form, &$form_state){
    // Form above was submitted, now lets clean up $form_state['values'], 
    // that's the submitted values in an associative array.
    form_state_values_clean($form_state);
    // And here is the value that was submitted:
    drupal_set_message($form_state['values']['field_org_id']);
}

Es sieht so aus, als würden Sie versuchen, ein Formular zu ändern, das im Kern generiert wird. Wenn dies der Fall ist, verwenden Sie hook_form_alter, um den Wert von $ form ['# submit'] als Jibran-Gliederung oben hinzuzufügen.

3
Coomie