Я пишу пользовательский модуль для Drupal 8. Он определяет объект конфигурации хранилища полей в файле modules / mymod / config / install / field.storage.bloom_stem.bs_twitter_ac.yml.
Проблема в том, что это не удаляется при удалении модуля; он, очевидно, остался позади, потому что при переустановке модуля происходит сбой.
drush -y pm-uninstall mymod
drush cr
drush -y en mymod
исключение «Drupal \ Core \ Config \ PreExistingConfigException» с сообщением «Объекты конфигурации (field.storage.bloom_stem.bs_twitter_ac), предоставленные mymod, уже существуют в активной конфигурации»
Так что, похоже, мне нужно кое-как вручную удалить этот объект конфигурации. Нужно ли предоставлять еще код, который удаляет его при удалении модуля?
8
entities
configuration-management
artfulrobot
источник
источник
Ответы:
Самый простой способ сделать это в данный момент - использовать
drush php
(илиcore-cli
) открыть интерактивный сеанс.Тогда используйте:
Эта функциональность также будет добавлена в консоль Drupal .
источник
migrate_plus.migration.*
config
таблицы.Drush команда для удаления объекта конфигурации:
drush config-delete <config_name>
.источник
drush -l your.site.domain config-delete <config_name>
drush cdel <config_name>
drush cr
после, чтобы удалить все кэшированные конфиг-зависимости, иначе вы можете получить что-то похожее на это:Error: Call to a member function getConfigDependencyKey() on null
Вы можете использовать следующие методы. Используйте следующий код в hook_uninstall
ИЛИ
в файле yml вы можете поместить зависимости как
тогда drupal автоматически удалит эти настройки при удалении вашего модуля, как описано Бердиром здесь https://drupal.stackexchange.com/a/173879/10436
источник
Используя консоль drupal :
источник
drupal config:delete 'migrate_plus.migration.*'
drupal config:delete active 'name'
или `drupal config: delete staging 'name' (если указан только один параметр, он будет предполагать, что вы указали тип, и предложит вам для имени конфига.)Drupal :: configFactory () -> reset () не удаляет объект конфигурации. Для этого бега
Drupal::configFactory()->getEditable('field.storage.node.your_field_name')->delete()
источник
Я создал простой модуль, который вы можете использовать для удаления элементов конфигурации.
https://www.drupal.org/project/config_delete
источник
Вы можете использовать консоль Drupal для удаления активной конфигурации, используя
drupal config:delete active config_to_delete
.источник
Найдите все перечисленные конфигурации, используя список конфигурации drush. Затем определите конфигурацию, которую вы хотите удалить. Используйте приведенную ниже команду для удаления конфигурации drush config-delete
источник
Я оставляю здесь небольшой (но немного перегруженный) скрипт Python, который удаляет остатки конфигурации. Это зависит от
drush config-delete
.Должно быть выполнено так:
источник
Используйте модуль Easy Install, чтобы избежать проблем с этой конфигурацией, этот модуль позволит удалять конфигурации при удалении модуля, он работает, даже если в конфигурациях модуля отсутствуют принудительно установленные в yml или не добавлены конфигурации в необязательной папке.
источник
Удалить активную конфигурацию из пользовательского модуля
Я столкнулся с той же проблемой, пытаясь удалить файлы конфигурации из пользовательского модуля. У меня есть пользовательский модуль, используемый для передачи пользовательских файлов конфигурации для веб-формы. Поскольку я не идеален, я хочу иметь возможность удалить модуль, отредактировать код и переустановить. Я обнаружил, что если бы я ссылался на свой пользовательский модуль (my_module) в разделе зависимостей / принудительного применения в файле config / install yml, то при удалении моего модуля файлы конфигурации также будут удалены.
источник
Все эти ответы рекомендуют удалять базовый объект конфигурации напрямую, но правильный способ - удалить сущность через систему хранения сущностей.
Например, если у вас есть стиль изображения с идентификатором «большой», и вы хотите удалить его, вы должны сделать это:
Делая это таким образом, ядро будет вызывать «предустановленный» до того, как конфиг будет удален, и «удалять» перехватчики после того, как конфиг будет удален, на что другие модули могут положиться для выполнения различных операций очистки.
источник
Используйте hook_uninstall, чтобы удалить конфигурацию, когда модуль удален.
Затем удалите конфигурацию:
источник