Добавление произвольных требований при установке модуля в Drupal

Иногда модуль в Drupal требует наличия специфических сущностей или конфигураций, например — определённого текстового формата. Поскольку текстовые форматы являются конфигурационными сущностями (entities), напрямую указать их как зависимость в .info.yml невозможно. Однако в вашем модуле можно реализовать проверку на наличие нужных условий во время установки — с помощью hook_requirements().

Использование hook_requirements() для проверки условий установки

Начиная с поздних версий Drupal 8, hook_requirements() позволяет задавать пользовательские требования на разных стадиях работы с модулем, включая установку (install), обновление (update) и обычную проверку (runtime).

Вот пример, как сгенерировать ошибку установки модуля, если не найден определённый текстовый формат.

Хук создаётся в файле MODULE.install:

Как это работает

Гибкость: Можно проверять любые условия — существование ролей, нод, конфигураций и даже внешние API, если нужно.

Фаза установки (install): Проверка выполняется только при установке модуля.

Отсутствие формата: Если текстовый формат с машинным именем content_format не найден, выводится ошибка с уровнем REQUIREMENT_ERROR.

Поведение при установке через Drush

Если модуль устанавливается через Drush, такие ошибки не остановят процесс полностью — система предложит вам выбор: продолжить установку несмотря на проблему или прервать её. Это удобно при работе в окружениях разработки, но требует осторожности на продакшене.


hook_requirements() — мощный способ обеспечить корректность установки модуля в Drupal. Он позволяет проверять произвольные условия, которые нельзя выразить в .info.yml, и предупреждать администратора о возможных ошибках на раннем этапе. Такой подход делает модули надёжнее и улучшает поддержку в долгосрочной перспективе.

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

Чтение данных из oembed провайдера

Март 11, 2025 г.

В Drupal 10/11 поддержка Oembed провайдеров в ядре (модуль media) позволяет легко и непринуждённо читать данные о медиа прямо из провайдера. Ранее я рассказывал как зарегистрировать oembed для rutube, чтобы иметь возможность оперировать видео контентом ...

Читать

Эффективное кеширование по доступу к ноде: параметрический Cache Context в Drupal

Июль 26, 2025 г.

Когда мы используем кеширование в Drupal, типичный подход — добавить user в список контекстов: ['user']. Это означает, что для каждого пользователя будет ...

Читать

Рендер произвольного блока в Drupal 11

Март 13, 2025 г.

Если не хочется объявлять дополнительный регион, чтобы настроить вывод блока через админку, то можно сделать рендер блока программно. Например добавим в препроцессинг страницы переменную с рендером блока branding. Этот блок предоставляется модулем ...

Читать

Подключаем yandex cloud как s3 в Drupal

Апрель 3, 2025 г.

Облачные файловые хранилища Яндекса можно подключить и использовать в вашем проекте на drupal через модуль s3fs. А именно, хранить там т.н. юзерфайлы, ...

Читать
 

Комментарии к «Добавление произвольных требований при установке модуля в Drupal»

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



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