Podczas czytania dokumentacji środowiska Ajax natknąłem się na wzmiankę o tej #ajax
właściwości. Wiem, po przejrzeniu kodu, że są inne z tych właściwości ze znakami skrótu przed nimi. Co oznacza znak skrótu? Na czym polegają te właściwości?
22
Odpowiedzi:
Ma to ogólnie związek z tablicami renderowania , nie dotyczy tylko AJAX ani interfejsu API formularza (chociaż interfejs API formularza używa tablic renderowania wyłącznie do budowania zawartości).
Mówiąc prościej, klucze tablicy w tablicy renderowania bez znaku
#
przed nazwą są postrzegane jako dzieci tablicy renderowania, a następnie są renderowane same (rekurencyjnie).Te z
#
przed nimi widoczne są jako dane meta / zmiennych dla tablicy nadania do stosowania w miarę potrzeby, i nie są same w sobie renderowane.Dokumenty tablicy renderowania (powiązane z powyższym) faktycznie przedstawiają to ładnie i zwięźle:
Te
#
klucze są „wskazówki”, że powyższy akapit mówi, że nie-#
klucze są dane zagnieżdżone.Całkowicie poleciłbym odczytanie tej strony, dobrze odwzorowuje całą tablicę renderowania i podaje przykłady kodu.
Jest też inne małe wyjaśnienie / przykład kodu w dokumentacji Theming the page, które mogą być przydatne.
Tablice renderowania są używane wszędzie w Drupal (formularze, motywy, ogólne znaczniki itp.), Więc wiedza na ich temat bardzo pomoże w przyszłym rozwoju Drupala.
źródło
Interfejs API formularza używa znaku # przed wszystkimi właściwościami, aby wprowadzić rozróżnienie między właściwościami a elementami potomnymi. W poniższym kodzie
$form['choice_wrapper']['choice']
jest elementem potomnym, a$form['choice_wrapper']['#tree']
właściwością.Wszystkie te właściwości są wymienione w odwołaniu do interfejsu API formularza . Istnieje wiele właściwości, ale wszystkie dotyczą renderowania, sprawdzania poprawności i przesyłania.
Powodem użycia prefiksu dla właściwości jest możliwość szybkiego odfiltrowania właściwości z elementów potomnych, co jest przydatne, gdy trzeba je renderować, na przykład za pomocą drupal_render () , który zawiera następujący kod.
Jeśli spojrzysz na element_children () , zauważysz, że kod do odfiltrowania właściwości jest następujący.
źródło