Hier ist ein Beispiel, auf das ich gerade gestoßen bin. Ich versuche, HTML in die Beschriftung meines Feldes einzufügen.
$form['field_feedback']['und']['#title'] <- has the title
$form['field_feedback']['und'][0]['#title'] <- has the title
$form['field_feedback']['und'][0]['value']['#title'] <- has the title. (Works)
Warum gibt es drei ausgefüllte #title-Attribute, von denen nur eines verwendet wird?
Antworten:
Sie sehen, wie Drupal Felder in einem Formular darstellt. Es bricht so zusammen:
$form['field_back']['und']
('und'
für'undefined'
) sind die verschiedenen Sprachen, in die das Feld übersetzt wurde. In Drupal wird empfohlen,LANGUAGE_NONE
für'und'
Code zu verwenden.$form['field_feedback']['und'][0]
repräsentieren z. B. die verschiedenen Einträge für das Feld. Wenn zum Beispiel ein Feld unbegrenzte Mächtigkeit hat, und es gibt mehrere Einträge für das Feld, werden sie als zeigen$form['field_feedback']['und'][0]
,$form['field_feedback']['und'][1]
usw.$form['field_feedback']['und'][0]['value']
. In diesem Fall lautet der Spaltennamevalue
für einen Knotenreferenzfeldtypnid
usw. Wenn einem Feld mehrere Datenspalten zugeordnet sind, werden auch mehr untergeordnete Elemente angezeigt. Diese werden durch ein Textfeld / Auswahlfeld / spezielles Widget dargestellt und liefern letztendlich den Wert für das Feld.Die Tatsache, dass den verschiedenen Elementen in der Hierarchie Titel hinzugefügt wurden, ist übrigens ehrlich. Ob diese Titel im Formular angezeigt werden oder nicht, hängt von den jeweiligen Einstellungen des Render-Arrays ab, in dem sie
#title
enthalten sind.Um den Titel im eigentlichen Formular-Widget zu ändern, müssen Sie sich nur um das Formularelement am unteren Rand des Arrays kümmern: die eigentlichen Eingabeelemente (
$form['field_feedback']['und'][0]['value']
usw.).Es ist wahrscheinlich erwähnenswert, dass das Element / Widget, das für ein bestimmtes Feld verwendet wird, sehr komplex sein kann. Wenn Sie es noch nicht haben, sollten Sie das Devel-Modul installieren und die
dpm()
Funktion verwenden, um das$form
Array zu untersuchen . Das zeigt Ihnen genau, wo in dem Array sich die Elemente befinden, auf die Sie abzielen möchten.quelle