[gelöst] Form-API: default_value wird nicht angezeigt, value schon.
am 14.03.2011 - 13:14 Uhr in
Hi,
ich habe hier ein seltsames Problem. Ich hab ein einfaches Kontaktformular, das etwas angepasst werden soll. U.a. soll es keine Labels haben, sondern stattdessen soll das Input-Feld mit Default-Werten vorbelegt sein. Gut, dachte ich mir. Ist ja nicht schwer, gibt ja die "#default_value" Option. Also, habe ich mein Template-File etwas erweitert:
function chicas_theme($existing, $type, $theme, $path) {
return array(
'contact_mail_page' => array(
'arguments' => array('form' => NULL)
),
);
}
und
function chicas_contact_mail_page($form) {
$form['name']['#title'] = ''; // Label ausblenden
$form['name']['#default_value'] = 'dein Name'; // Standardwert setzen
return drupal_render($form);
}
So, nach leeren aller Caches wird der Titel nicht mehr angezeigt, allerdings kein Default-Value gesetzt. Wenn ich mir das HTML dazu anschaue, ist das Attribut "value" komplett leer. Ändere ich allerdings "#default_value" zu "#value" wird der Wert korrekt gesetzt. Also wird meine Funktion ja auch aufgerufen, was mir auch der Theme-Developer bestätigt.
Lasse ich mir das Form mit print_r() ausgeben, sehe ich sogar, dass dort der "#default_value" Wert korrekt vorhanden ist. Wer also überschreibt meinen Default-Wert noch und warum wird der nicht angezeigt? Gibt es da eine versteckte Option, von der ich noch nichts weiß ?
Bin echt ratlos und dankbar für jede Hilfe ;)
Martin
- Anmelden oder Registrieren um Kommentare zu schreiben
hook_form_alter
am 15.03.2011 - 09:39 Uhr
Hallo.
Verwende zum Setzen von
#default_value
besser [api:hook_form_alter:6] in einem kleinen Modul. Auf theme-Ebene (speziell für [api:theme_textfield:6]) gibt es#default_value
nicht mehr, es wird#value
verwendet.Also müsste Deine Funktion
$form['name']['#value'] = 'dein Name';
verwenden.Stefan
stBorchert
am 21.03.2011 - 21:03 Uhr
Hallo.
Verwende zum Setzen von
#default_value
besser [api:hook_form_alter:6] in einem kleinen Modul. Auf theme-Ebene (speziell für [api:theme_textfield:6]) gibt es#default_value
nicht mehr, es wird#value
verwendet.Also müsste Deine Funktion
$form['name']['#value'] = 'dein Name';
verwenden.Stefan
Danke für den Hinweis ;) Tatsächlich hab ich das schonmal genutzt, mir war es nur entfallen. Läuft prima. Ich setze es mal auf gelöst.
Danke & viele Grüße
Martin