Подключение CSS/JS к форме Drupal

Если необходимо подключить стили или скрипты к своей форме, как это сделать?

Первый подход — добавить необходимые стили и скрипты в тему оформления. В этом случае, если к примеру, идет речь о форме редактирования, которая отображается в шаблоне используемом только для админ-панели, вам придется заниматься кастомизацией ещё одной темы, помимо основной. А ваш модуль станет зависим от темы оформления.

Оптимально было бы подключить нужные файлы с помощью одного из хуков form API.

hook_form_alter

Прямое подключение

Можно добавить в хук form_alter вызов drupal_add_js(), drupal_add_css(). И это будет работать до тех пор, пока ваша форма успешно проходит валидацию. При ошибке в любом из #validate hook-ов, форма потеряет подключаемые файлы.

#suffix

Атрибут формы suffix (и аналогично prefix) позволяет добавить произвольный HTML код. Никто не мешает вставить следующее:

Хотя этот подход не испытывает проблем на этапе валидации, но явно не сочетается с парадигмой MVC.

#after_build

В этом свойстве формы можно указать функции вызываемые каждый раз после окончания сборки формы. Как раз в этот момент можно использовать drupal_add_css() и drupal_add_js(), чтобы корректно подключить нужные файлы.

Все в этом варианте хорошо и правильно, но нам всего то лишь нужно подключить пару файлов, а не превращать работу с формой в бесконечный вызов хелперов. :)

#attached

Потому в Drupal 7 появляется специальный атрибут формы — #attached. Здесь вы можете указать необходимые JS и CSS файлы.

Ну или так:

Последние примеры я спер из документации drupal form API :).

Мало букафф? Читайте есчо !

Рендеринг нужного блока в Drupal 7

Июль 12, 2015 г.

Не всегда удобно выводить блоки в определенные шаблоном регионы. Как вывести произвольный блок в нужном месте шаблона? Для решения этой задачи пришлось не много покопаться в коде движка. Результатом копания стала вот такая функция: [crayon-6ad624354193b058370099/] ...

Читать

Добавление условий во views программно

Март 31, 2019 г.

Модуль Views - мощный инструмент в копилке друпалера. Конструктор позволяет создавать условия, перекрывающие большую часть потребностей в практических ...

Читать

Создаём программно url alias в Drupal 9

Август 28, 2021 г.

Сниппет кода, демонстрирующий как alias создаётся в Drupal 9. Ранее (в 8й версии) это был сервис ядра path.alias_storage, и код выглядел так: [crayon-6ad6243541bc7671422258/] В 9й версии хранилище перенесли в entityTypeManager и потому выглядит ...

Читать

Чем заменить drupal_get_path() в Drupal 9/10

Январь 9, 2024 г.

Функция считается устаревшей, начиная с версии ядра 9.3, в 10-й версии функция удалена из кода. В новом API нужно воспользоваться одним из сервисов ядра, которые реализуют нужную функцию. Сервис extension.list.module - реализует функции, связанные ...

Читать
 

Комментарии к «Подключение CSS/JS к форме Drupal»

Понравилась статья? Есть вопросы? - пишите в комментариях.



Комментарий: