Вот пример, с которым я только что столкнулся. Я пытаюсь поместить немного HTML в метку своего поля.
$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)
Почему есть три заполненных атрибута #title с использованием только одного?
Ответы:
То, что вы видите, это то, как Drupal представляет поля в форме. Это ломается так:
$form['field_back']['und']
('und'
для'undefined'
) - это разные языки, на которые поле было переведено. В Drupal рекомендуется использоватьLANGUAGE_NONE
для'und'
в коде.$form['field_feedback']['und'][0]
Дочерние элементы в каждом языковом массиве, например , представляют разные записи для поля. Например, если поле имеет неограниченное количество элементов и в этом поле есть несколько записей, они будут отображаться как$form['field_feedback']['und'][0]
,$form['field_feedback']['und'][1]
и т. Д.$form['field_feedback']['und'][0]['value']
. В этом случае имя столбца будет такимvalue
, для типа поля ссылки на узелnid
, и т. Д. Если с полем связано несколько столбцов данных, вы также увидите больше дочерних элементов. Они представлены текстовым полем / полем выбора / специальным виджетом и в конечном итоге будут предоставлять значение для поля.Факт, что названия были добавлены к различным элементам в иерархии, является случайным, чтобы быть честным. Независимо от того, отображаются ли эти заголовки в форме, зависит от конкретных настроек массива рендеринга, в котором они
#title
содержатся.Чтобы изменить заголовок фактического виджета формы, вам нужно беспокоиться только об элементе формы в самом низу массива: то есть о реальных элементах ввода (
$form['field_feedback']['und'][0]['value']
и т. Д.).Вероятно, стоит отметить, что элемент / виджет, используемый для определенного поля, может быть довольно сложным. Если у вас его еще нет, вы должны установить модуль Devel и использовать
dpm()
функцию для проверки$form
массива; это покажет вам, где именно в массиве находятся элементы, на которые вы пытаетесь нацелиться.источник