Voici un exemple que je viens de rencontrer. J'essaie de mettre du HTML dans l'étiquette de mon champ.
$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)
Pourquoi trois attributs #title sont-ils remplis, un seul étant utilisé?
Réponses:
Ce que vous voyez, c'est comment Drupal représente les champs dans un formulaire. Il se décompose comme ceci:
$form['field_back']['und']
('und'
pour'undefined'
) sont les différentes langues dans lesquelles le champ a été traduit. Dans Drupal, il est recommandé d'utiliserLANGUAGE_NONE
pour'und'
dans le code.$form['field_feedback']['und'][0]
, représentent les différentes entrées du champ. Par exemple, si un champ a cardinalité illimité, et il y a plusieurs entrées pour ce champ, ils montreront que$form['field_feedback']['und'][0]
,$form['field_feedback']['und'][1]
etc.$form['field_feedback']['und'][0]['value']
. Dans ce cas, le nom de la colonne estvalue
, pour un type de champ de référence de nœudnid
, etc. Si un champ est associé à plusieurs colonnes de données, vous verrez également plus d'enfants. Ceux-ci sont représentés par un champ de texte / une zone de sélection / un widget spécial, et fourniront finalement la valeur du champ.Le fait que des titres aient été ajoutés aux divers éléments de la hiérarchie est fortuit pour être honnête. Que ces titres soient affichés ou non sur le formulaire dépend des paramètres particuliers du tableau de rendu dans lequel chacun
#title
est contenu.Pour modifier le titre sur le widget de formulaire, il vous suffit de vous soucier de l'élément de formulaire situé tout en bas du tableau: c'est-à-dire des éléments d'entrée réels (
$form['field_feedback']['und'][0]['value']
, etc.).Il est probablement intéressant de noter que l'élément / widget utilisé pour un champ particulier peut être assez complexe. Si vous ne l'avez pas déjà, installez le module Devel et utilisez la
dpm()
fonction pour inspecter le$form
tableau. cela vous montrera exactement où dans le tableau se trouvent les éléments que vous essayez de cibler.la source