Piszę niestandardowy moduł dla Drupala 8. Definiuje obiekt konfiguracji pamięci masowej w polu o nazwie moduły / mymod / config / install / field.storage.bloom_stem.bs_twitter_ac.yml.
Problem polega na tym, że nie jest to usuwane podczas odinstalowywania modułu; najwyraźniej jest pozostawiony, ponieważ kiedy ponownie instaluję moduł, mam awarię.
drush -y pm-uninstall mymod
drush cr
drush -y en mymod
wyjątek „Drupal \ Core \ Config \ PreExistingConfigException” z komunikatem „Obiekty konfiguracji (field.storage.bloom_stem.bs_twitter_ac) dostarczone przez mymod już istnieją w aktywnej konfiguracji”
Wygląda na to, że potrzebuję trochę ręcznego usunięcia tego obiektu konfiguracji. Czy muszę podać trochę kodu, który usuwa go po odinstalowaniu modułu?
8
entities
configuration-management
artfulrobot
źródło
źródło
Odpowiedzi:
W tej chwili najłatwiejszym sposobem jest skorzystanie z
drush php
(lubcore-cli
), aby otworzyć sesję interaktywną.Następnie użyj:
Ta funkcja zostanie również dodana do konsoli Drupal .
źródło
migrate_plus.migration.*
config
tabeli.Drush polecenie, aby usunąć obiekt konfiguracji:
drush config-delete <config_name>
.źródło
drush -l your.site.domain config-delete <config_name>
drush cdel <config_name>
drush cr
po to, aby usunąć wszelkie zależności konfiguracyjne w pamięci podręcznej, w przeciwnym razie możesz uzyskać coś, co wygląda następująco:Error: Call to a member function getConfigDependencyKey() on null
Możesz użyć następujących metod. Użyj następującego kodu w hook_uninstall
LUB
w pliku yml można umieścić zależności, takie jak
wtedy drupal automatycznie usunie te konfiguracje podczas odinstalowywania modułu zgodnie z opisem Berdira tutaj https://drupal.stackexchange.com/a/173879/10436
źródło
Za pomocą konsoli drupal :
źródło
drupal config:delete 'migrate_plus.migration.*'
drupal config:delete active 'name'
Lub `drupal config: delete staging 'name' (z podanym tylko jednym parametrem, zakładasz, że nadałeś mu typ i wyświetli się monit dla nazwy konfiguracji.)Drupal :: configFactory () -> reset () nie usuwa obiektu config. Do tego biegu
Drupal::configFactory()->getEditable('field.storage.node.your_field_name')->delete()
źródło
Stworzyłem prosty moduł, którego można użyć do usuwania elementów konfiguracji.
https://www.drupal.org/project/config_delete
źródło
Możesz użyć konsoli Drupal, aby usunąć aktywną konfigurację za pomocą
drupal config:delete active config_to_delete
.źródło
Wyszukaj wszystkie konfiguracje wymienione za pomocą drush config-list Następnie określ konfigurację, którą chcesz usunąć. Użyj poniższego polecenia, aby usunąć konfigurację drush config-delete
źródło
Zostawiam tutaj mały (nieco nieco przeprojektowany) skrypt w języku Python, który usuwa resztki konfiguracji. To zależy
drush config-delete
.Należy wykonać w następujący sposób:
źródło
Użyj modułu Łatwa instalacja, aby uniknąć problemów z konfiguracją, moduł ten pozwoli usunąć konfiguracje podczas odinstalowywania modułu, działa nawet, jeśli konfiguracje modułu nie zawierają wymuszonych w yml lub niezapisanych konfiguracji w opcjonalnym folderze.
źródło
Odinstaluj aktywną konfigurację z modułu niestandardowego
Zetknąłem się z tym samym problemem, próbując odinstalować pliki konfiguracyjne z niestandardowego modułu. Mam niestandardowy moduł używany do przekazywania niestandardowych plików konfiguracyjnych dla formularza internetowego. Ponieważ nie jestem idealny, chcę mieć możliwość odinstalowania modułu, edycji kodu i ponownej instalacji. Odkryłem, że jeśli odwołam się do mojego modułu niestandardowego (mój_moduł) w sekcji zależności / wymuszone w pliku config / install yml, to po odinstalowaniu modułu pliki konfiguracyjne również się odinstalują.
źródło
Wszystkie te odpowiedzi zalecają bezpośrednie usunięcie podstawowego obiektu konfiguracji, ale poprawnym sposobem jest usunięcie encji za pośrednictwem systemu pamięci encji.
Na przykład, jeśli masz styl obrazu z identyfikatorem „duży” i chcesz go usunąć, powinieneś to zrobić:
Robiąc to w ten sposób, rdzeń wywoła „wstępne usunięcie” przed usunięciem konfiguracji i „usunięcie” przechwytuje po usunięciu konfiguracji, na których inne moduły mogą polegać przy wykonywaniu różnych operacji czyszczenia.
źródło
Użyj hook_uninstall, aby usunąć konfigurację po odinstalowaniu modułu.
Następnie usuń konfigurację:
źródło