Ein paar nützliche Form Funktionen


Die Form API von Drupal ist sehr mächtig und relativ komplex. In einem meiner ersten Module für Drupal habe ich die Formulare noch von Hand in HTML geschrieben, bis ich mir mal die Form API angeschaut habe… seither hat sich mein Drupal Leben schon ein wenig vereinfacht.

Die standard Funktionen werden sicher allen bekannt sein. Ich möchte hier ein paar andere Hooks vorstellen:

Die Ausgangslage:
Ich wollte ein Formular machen, welches beim initialen Aufruf lediglich einen Knopf "Vorschau" zur Verfügung stellt. Klickt man auf den Knopf, so wird das Formular überprüft und dann nochmals dargestellt, jetzt jedoch mit dem Knopf "Abschicken". Das initiale Formular dazu sieht wie folgt aus (lediglich ein Auszug):

'submit',
'#value' => t('Preview'),
);
$form['simple_buy_role']['was_validated'] = array(
'#type' => 'hidden',
'#default_value' => 'false',
);

$form['#pre_render'] = array ('_simple_buy_role_render_after_validating'); //Funktion nach #theme, #validation Funktion
?>

Das Hidden Feld wird später noch verwendet. Der pre_render Wert ist ein Verweis auf einen Eintrag im Menu -> Eine Funktion welche aufgerufen wird bevor das Formular gerendert wird, jedoch nachdem das Formular validiert wurde.

Das Formular wird also abgeschickt, geht durch form_validate() und FALLS alles io ist, wird ein Aufruf an _simple_buy_role_render_after_validating() gemacht:

Hier werden jetzt also noch einfach ein paar Änderungen gemacht. Das Feld ist validiert und kann jetzt auf true gesetzt werden. Hier wird dann auch der Knopf für von "Vorschau" auf "Absenden" geändert. Wird jetzt das Formular abgeschickt, wird das in der validate_funktion überprüft und es werden die restlichen validate Funktionen ausgelassen -> das Formular wird abgeschickt.

Links