D7 Formularfeld ändern - Wie gehts ?
am 04.03.2011 - 15:21 Uhr in
Ich versuche mit hook_form_alter() Änderungen an einem ganz normalen Formularfeld durchzuführen.
Ich habe einen Inhaltstypen "Modultest" über das normale Interface erstellt und diesem Inhaltstypen das Textfeld "Modultextfeld" hinzugefügt. Der maschinenlesbare Name heisst also "field_modultextfeld".
Mit hook_form_alter() wollte ich nun diesem Feld per Modul eine Beschreibung hinzufügen und zwar mit foldendem Code:
<?php
function zumschluss_form_alter(&$form, &$form_state, $form_id) {
// drupal_set_message("Form ID is : " . $form_id);
//drupal_set_message('<pre>'. print_r($form, 1) .'</pre>');
switch ($form_id) {
case 'modultest_node_form':
drupal_set_message('<pre>'. print_r($form, 1) .'</pre>'); // damit das array zum Feld ausgegeben wird
$form['field_modultextfeld'] = array(
'#type' => 'textfield',
'#title' => t('Nur ein Testfeld'),
'#description' => t('Die Testbeschreibung'),
'#prefix' => '<div id="testfield">',
'#suffix' => '</div>',
);
break;
default:
break;
}
}
Dieser Code führt soweit ich das verstehe dazu, dass das automatisch generierte Formularfeld komplett ersetzt wird.
Wenn ich dann aber einen neuen Inhalt erstelle, gibt es die angehängten Fehlermeldungen. Der Node wird gespeichert, aber das Feld bleibt leer.
Wenn ich das richtig verstehe, könnte ich auch folgenden Code verwenden, um die Beschreibung des Formularfeldes gezielt anzusprechen:
$form['field_modultextfeld']['#description] = t('Die Testbeschreibung');
Das geht aber nicht, weil offenbar, die array-Struktur nicht stimmt.
Erst dieser Code funktioniert:
$form['field_modultextfeld']['und'][0]['value']['#description'] = t('Die Testbeschreibung');
Warum ist das so ?
Ist das irgendwo beschrieben ?
Oder, was mache ich falsch ?
Das Array (ist so lang, dass ich es auf drei Bilddateien verteilen musste) und die Fhelermeldung habe ich angehängt.
Schon mal Danke im voraus !
Anhang | Größe |
---|---|
formularfeld_array_1.JPG | 40.92 KB |
formularfeld_array_2.JPG | 40.73 KB |
formularfeld_array_3.JPG | 28.33 KB |
formularfeld_submit_error.JPG | 92 KB |
- Anmelden oder Registrieren um Kommentare zu schreiben
Hat denn niemand eine
am 13.03.2011 - 10:51 Uhr
Hat denn niemand eine Erklärung dafür ?
Ich arbeite noch nicht mit
am 13.03.2011 - 11:08 Uhr
Ich arbeite noch nicht mit Drupal7, aber zwei Dinge sind mir aufgefallen:
Welche Sprache ist denn "und"? Habe ich noch nie gehört. ich kenne da nur die 2-buchstabige ISO-Form. Der Fehler sagt auch, daß er mit dem Laguage-Index nicht zurechtkommt.
Wenn Du schon irgendwo die t()-Funktion einsetzt, dann richtig. Der übergebene Text muß in Englisch geschrieben sein.
Beste Grüße
Werner
'und' ist keine Sprache,
am 13.03.2011 - 12:06 Uhr
'und' ist keine Sprache, sondern bedeutet "undefined", also "unbestimmt".
Wird verwendet, wenn man mehrere Sprachen aktiviert, aber keine besonders bestimmt hat.
Hat man nur die deutsche Sprache aktiviert, wird aus 'und' automatisch 'de'.
Das wäre dann gleich das nächste Problem, aber ich wollte erstmal einfach beginnen.
Die Verwendung der t()-Funktion ist mir natürlich klar, sollte ja nur ein einfacher Test sein.
language
am 13.03.2011 - 12:08 Uhr
"und" bedeutet "undefined", sprich "Sprache nicht gesetzt".
Wäre denn vielleicht jemand
am 16.03.2011 - 18:33 Uhr
Wäre denn vielleicht jemand so nett und versucht meine Schritte nachzuvollziehen, damit ich feststellen kann, ob es an der Konfiguration meiner Drupa-Installation liegt oder ob der Fehler auch anderswo auftritt. Eventuell liegt es ja an den Spracheinstellungen.
Vielleicht ist es ja auch kein Fehler und das Array ist so korrekt, bloß eine entsprechende Dokumentation fehlt auf drupal.org.