En lisant la documentation du framework Ajax, je suis tombé sur la mention de la #ajax
propriété. Je sais en fouillant dans le code qu'il y a d'autres de ces propriétés avec des signes de hachage devant eux. Que signifie le signe de hachage? Quelles sont ces propriétés?
22
Réponses:
Cela concerne les tableaux de rendu en général, ce n'est pas seulement spécifique à AJAX ou à l'API de formulaire (bien que l'API de formulaire utilise des tableaux de rendu exclusivement pour créer son contenu).
En termes simples, les clés de tableau dans un tableau de rendu sans un
#
devant le nom sont considérées comme des enfants du tableau de rendu et sont ensuite rendues elles-mêmes (récursivement).Ceux avec un
#
devant eux sont considérés comme des métadonnées / variables que le tableau de rendu peut utiliser si nécessaire, et ne sont pas eux-mêmes rendus.Les documents du tableau de rendu (liés à ci-dessus) mettent en fait cela gentiment et succinctement:
Les
#
clés sont les «indices» dont parle le paragraphe ci-dessus, les non-#
clés sont les données imbriquées.Je recommande vivement de lire cette page, elle fait un bon travail de démystification de l'ensemble du tableau de rendu et fournit des exemples de code.
Il existe également un autre petit exemple d'explication / de code sur la documentation Theming the page qui pourrait être utile.
Les tableaux de rendu sont utilisés partout dans Drupal (formulaires, thèmes, balisage général, etc.), donc en savoir un peu sur eux aidera beaucoup au développement futur de Drupal.
la source
L'API de formulaire utilise un # devant toutes les propriétés, pour faire la distinction entre les propriétés et les éléments enfants. Dans le code suivant,
$form['choice_wrapper']['choice']
est un élément enfant, tandis que$form['choice_wrapper']['#tree']
est une propriété.Toutes ces propriétés sont répertoriées dans la référence de l'API Form . Il existe de nombreuses propriétés, mais elles concernent toutes le rendu, la validation et la soumission.
La raison d'utiliser un préfixe pour les propriétés est de pouvoir filtrer rapidement les propriétés des éléments enfants, ce qui est utile lorsqu'elles doivent être rendues, par exemple avec drupal_render () , qui contient le code suivant.
Si vous regardez element_children () , vous remarquerez que le code pour filtrer les propriétés est le suivant.
la source