Я создаю пользовательский модуль в Drupal 8. Он включает в себя некоторые файлы конфигурации YAML.
По мере разработки мне нужно изменить и добавить в конфигурацию, например, добавить еще одно поле в мой пользовательский объект.
В настоящее время единственный способ заставить Drupal заметить изменения - это удалить модуль и переустановить его.
Есть ли способ заставить Drupal проверить, что файлы конфигурации, предоставляемые модулями, совпадают с активной конфигурацией, и если нет, обновить активную конфигурацию? Как обрабатываются обновления модуля? В D7 hook_update_N
будет использоваться для добавления полей с использованием PHP, но, похоже, это должно быть обработано CM в D8?
Вещи, которые я пробовал после обновления файлов yml в модуле:
drush cr
Конфигурация синхронизации.вручную скопируйте все обновленные файлы конфигурации в файл,
sites/default/files/config_XXX/staging/
но это приводит к этой ошибке: «Этапная конфигурация не может быть импортирована, поскольку она создается с сайта, отличного от этого сайта. Вы можете синхронизировать конфигурацию только между клонированными экземплярами этого сайта». ,вручную импортируйте файлы по одному с помощью менеджера конфигурации. Это работает, но, очевидно, должен быть более автоматический путь.
[EDIT] вручную использует модуль config_update для проверки изменений и «возврата» к конфигурации модуля. Опять же, это руководство.
РЕДАКТИРОВАТЬ: Из управления конфигурацией - делать и не делать
НЕЛЬЗЯ
Попробуйте изменить активную конфигурацию на вашем сайте, изменив файлы в каталоге config / install модуля. Это НЕ будет работать, потому что Drupal будет читать только из этого каталога, когда модуль установлен.
... но изменения там собираются произойти, если модули не связаны с любой конфиг они нуждались в их первый когда - либо отпустить, и никогда не может когда - либо обновления или добавления конфигурации.
Заранее спасибо.
hook_update_N
я бы предположил, но я не уверен, что
hook_update_N
. Отличная статья о Drupal 8 для небольших сайтов (и часть 2 ). В D8 «сайты имеют свою конфигурацию, а не модули» .