Formulare von anderen Module modifzieren


Manchmal sind die Formulare nicht genau so, wie man sie gerne haben möchte. Das lässt sich jedoch sehr schnell ändern. Beispiel: Ich will den Submit Knopf vom Login Formular mit einem Bild ersetzen. Ich glaube das kann man auch via CSS machen, ist aber nicht so zuverlässig. Hier wie ich es gemacht habe:

Ich habe ein kleines Hilfsmodul geschrieben, da ich sonst noch immer hie und da ein paar Helfersachen brauche. In diesem Hilfsmodul habe ich folgend funktion: hook_form_alter:

<!–?php
function snippets_form_alter(&$form, $form_state, $form_id){
switch ( $form_id ) {
case 'user_login_block':
$form['submit'] = array (
'#type' => 'image_button',
'#value' => t('Search'),
'#src' => 'image/path/img.gif',
);
break;
}
}
?>

Cache leeren! Diese Funktion wird jetzt immer aufgerufen, wenn ein Formular geladen wird. Im Switch Statement wird dann das Formular user_login_block abgefangen und dann kann gleich direkt die submit-Komponente des Formulars verändert werden. Die Funktion braucht keinen Returnwert, da das ganze als Pointer daherkommt.

Dazu gibt es einen ausgezeichneten Artikel auf Lullabot.