hook_form_alter und das bearbeiten von select-fields
am 18.04.2012 - 19:01 Uhr in
Hallo
Ich habe einen Contenttype 'X' der ein Field in Form eines Select-fields Referenzen auf einen zweiten Cnntenttype 'Y' enthält.
Um das node/add Fromular des Contenttypes 'X' zu bearbeiten habe ich ein Modul erstellt und diverse Änderungen via 'hook_form_alter' vorgenommen.
Nun wollte ich bei dem oben genannten Select-field den Text des Standardwertes 'Select a Value' ändern (den Text, Nicht den default-value).
Versuche wie
$form['besagtes_field']['und']['#multiple']['#options']['_none']' ='was auch immer'
scheiterten kläglich. Irgendwie blicke ich da grad nicht mehr durch. Ebenfalls wollte ich an das besagte Field noch eine Option hinzufügen, zudem es keinen entsprechenden Inhalt vom Contenttyp 'Y' gibt (klingt unlogisch, ist hier aber nötig). Wie kann ich diese beiden Manipulationen effektiv durchziehen?
Gibt es eventuell einen hook um das field generell zu bearbeiten, also nicht über 'hook_form_alter'?
- Anmelden oder Registrieren um Kommentare zu schreiben
Hook_form_alter ist schon
am 18.04.2012 - 20:57 Uhr
Hook_form_alter ist schon richtig. Laß Dir mal den Form-Array ausgeben, darin solltest Du den Text finden. Außerden sind alle Select-Values ebenfalls dort abgelegt und Du müßtest den entsprechenden Teil-Array um Deinen Wert erweitern.
Was ich jetzt nicht weiß, ist, ob die Werte direkt zu finden sind oder noch nicht erscheinen. Dann mußt Du mittels
$form['#after_build'][] = 'meine_afterbuild-funktion';
eine eigene Funktion definieren, die direkt vor der Anzeige des Formulars noch ausgeführt wird. Darin sollten dann alle Form-Elemente greifbar sein.Beste Grüße
Werner
.
Werner
drupal-training.de
Moderator und Drupal Trainer
* - - - - - - - - - - - - - - - - - - - - - - - - - - - *
hi floppy Zitat: Gibt es
am 18.04.2012 - 20:58 Uhr
hi floppy
Gibt es eventuell einen hook um das field generell zu bearbeiten, also nicht über 'hook_form_alter'?
dafür ist ja hook_form_alter da
Versuche wie
$form['besagtes_field']['und']['#multiple']['#options']['_none']' ='was auch immer'
scheiterten kläglich.
so müsste es funktionieren:
['#default_value'] = 'was auch immer'
http://drupal.stackexchange.com/questions/8171/set-select-list-default-v...
Mhh..läuft nich ganz:mit
am 23.04.2012 - 15:35 Uhr
Mhh..läuft nich ganz:
mit
['#default_value'] = 'was auch immer'
kann ich nur den key der Option übergeben, welche standardmäßig in dem Select-field ausgewählt sein soll.
Die after_build funktion war der richtige Weg, also folgende Vorgehensweise:
in der "hook_form_alter"-Funktion:
$form['besagtes_field']['und']['#after_build'][] = 'alter_besagtes_field';
und nun die Funktion
function alter_besagtes_field($form, &$form_state){
$form['#options']['_none'] = 'Bitte waehlen';//Ersetze den Text "- Select a value -"
$form['#options']['0']='neue Option';//Füge eine neue Option mit dem Key 0 hinzu
return $form;
}
Was mich jetzt gerade beschäftigt ist, dass ich mit dieser Methode,die den Text "- Select a value -" ersetzen soll keine Umlaute benutzen kann...
Schreibe ich ein 'ä' wird der komplette Text auf der Seite ausgeblendet. Schreibe ich anstatt dessen das korrekte ä , wird eben dies auf der Website ausgegeben und nich das 'ä'. Ideen?
Welchen Editor benutzt
am 23.04.2012 - 16:03 Uhr
Welchen Editor benutzt du?
Hast du als Zeichensatz "utf8" eingestellt?
Gruß
JThan
_____
Alle Angaben in meinen Beiträgen sind stets ohne Gewähr und auf eigenes Risiko für bare Münze zu nehmen.
Benutze Notepad++ Arbeite in
am 24.04.2012 - 14:17 Uhr
Benutze Notepad++
Arbeite in UTF8, hatte sich aber gezeigt, dass Notepad++ in den *.module-Dateien auf ANSI umspringt...
Habs geändert, Problem behoben.
Danke