Добавление произвольных требований при установке модуля в 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, и предупреждать администратора о возможных ошибках на раннем этапе. Такой подход делает модули надёжнее и улучшает поддержку в долгосрочной перспективе.

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

Drupal: шаблоны для taxonomy_term и view mode — как добавить?

Июль 19, 2025 г.

При работе с таксономией в Drupal нередко возникает потребность отображать термины по-разному в зависимости от контекста. Например, один и тот же термин в режиме teaser должен выводиться компактно, а в режиме full — с подробным описанием. Если вы используете ...

Читать

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

Июль 26, 2025 г.

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

Читать

Добавляем в page cache зависимость от значения cookie

Март 4, 2025 г.

Модуль page_cache использует http_middleware, чтобы зацепиться за объект request и произвести кеширование страницы. Работает он для анонимных пользователей. ...

Читать

Drupal: возврат страницы из контроллера с установкой cookie и использованием шаблона темы

Сентябрь 12, 2025 г.

В Drupal контроллеры чаще всего возвращают Renderable-массивы. Такие массивы автоматически проходят через систему рендеринга и подставляются в базовый шаблон темы (page.html.twig). Но иногда бывает нужно получить полный Response с темизацией вручную — ...

Читать
 

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

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



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