Читая документацию по фреймворку Ajax, я обнаружил упоминание об этом #ajax
свойстве. Из ознакомления с кодом я знаю, что есть другие свойства с хеш-символами перед ними. Что означает хеш-знак? О чем эти свойства?
22
Читая документацию по фреймворку Ajax, я обнаружил упоминание об этом #ajax
свойстве. Из ознакомления с кодом я знаю, что есть другие свойства с хеш-символами перед ними. Что означает хеш-знак? О чем эти свойства?
Ответы:
В общем, это связано с массивами рендеринга , а не только с AJAX или API форм (хотя API форм использует массивы рендеринга исключительно для создания своего контента).
Проще говоря, ключи массива в массиве рендеринга без имени
#
перед именем воспринимаются как дочерние элементы массива рендеринга и впоследствии визуализируются сами (рекурсивно).Те , с
#
перед ними рассматриваются как мета - данные / переменные для визуализации массива использования по мере необходимости, и сами не оказаны.Документы массива рендеринга (ссылки на которые приведены выше) на самом деле выглядят так:
Эти
#
ключи являются «подсказкой» , что выше пункт говорит о том , что не-#
ключи вложенных данные.Я бы настоятельно рекомендовал прочитать эту страницу, она хорошо справляется с демистификацией всего массива рендеринга и предоставляет примеры кода.
Есть также еще один небольшой пример объяснения / кода на странице Theming на странице, который может быть полезен.
Массивы рендеринга повсеместно используются в Drupal (формы, темы, общая разметка и т. Д.), Поэтому знание о них очень поможет в дальнейшей разработке Drupal.
источник
API формы использует знак # перед всеми свойствами, чтобы различать свойства и дочерние элементы. В следующем коде
$form['choice_wrapper']['choice']
это дочерний элемент, а$form['choice_wrapper']['#tree']
свойство.Все эти свойства перечислены в справочнике Form API . Существует много свойств, но все они связаны с отображением, проверкой и отправкой.
Причиной использования префикса для свойств является возможность быстрой фильтрации свойств из дочерних элементов, что полезно, когда они должны отображаться, например, с помощью drupal_render () , который содержит следующий код.
Если вы посмотрите на element_children () , вы заметите следующий код для фильтрации свойств.
источник