Aquí hay un ejemplo que acabo de encontrar. Estoy tratando de poner algo de HTML en la etiqueta de mi campo.
$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)
¿Por qué hay tres atributos #title poblados con solo uno en uso?
Respuestas:
Lo que está viendo es cómo Drupal representa los campos en un formulario. Se descompone así:
$form['field_back']['und']
('und'
for'undefined'
) son los diferentes idiomas a los que se ha traducido el campo. En Drupal, se recomienda el usoLANGUAGE_NONE
de'und'
un código.$form['field_feedback']['und'][0]
, representan las diferentes entradas para el campo. Por ejemplo, si un campo tiene cardinalidad ilimitado, y hay varias entradas para ese campo, que se mostrarán como$form['field_feedback']['und'][0]
,$form['field_feedback']['und'][1]
, etc.$form['field_feedback']['und'][0]['value']
. En este caso, el nombre de la columna esvalue
, para un campo de referencia de nodo, seríanid
, y así sucesivamente. Si un campo tiene varias columnas de datos asociadas, también verá más elementos secundarios. Estos están representados por un campo de texto / cuadro de selección / widget especial, y finalmente proporcionarán el valor para el campo.El hecho de que se hayan agregado títulos a los diversos elementos en toda la jerarquía es incidental para ser sincero. El hecho de que esos títulos se muestren o no en el formulario depende de la configuración particular de la matriz de representación en la que
#title
está contenido cada uno .Para cambiar el título en el widget de formulario real, solo debe preocuparse por el elemento de formulario en la parte inferior de la matriz: es decir, los elementos de entrada reales (
$form['field_feedback']['und'][0]['value']
, etc.).Probablemente valga la pena señalar que el elemento / widget utilizado para un campo en particular puede ser bastante complejo. Si aún no lo tiene, debe instalar el módulo Devel y usar la
dpm()
función para inspeccionar la$form
matriz; eso le mostrará exactamente en qué parte de la matriz se encuentran los elementos a los que intenta apuntar.fuente