J'écris un module personnalisé pour Drupal 8. Il définit un objet de configuration de stockage dans un fichier appelé modules / mymod / config / install / field.storage.bloom_stem.bs_twitter_ac.yml.
Le problème est que cela n'est pas supprimé lorsque je désinstalle le module; il est apparemment laissé pour compte car, lorsque je réinstalle le module, je tombe en panne.
drush -y pm-uninstall mymod
drush cr
drush -y en mymod
exception 'Drupal \ Core \ Config \ PreExistingConfigException' avec le message 'Les objets de configuration (field.storage.bloom_stem.bs_twitter_ac) fournis par mymod existent déjà dans la configuration active'
Il semble donc que j'ai besoin de savoir comment supprimer manuellement cet objet de configuration. Dois-je fournir un peu plus de code qui le supprime lorsque le module est désinstallé?
la source
Réponses:
Le moyen le plus simple de le faire pour le moment est d’utiliser
drush php
(oucore-cli
) d’ouvrir une session interactive.Alors utilisez:
Cette fonctionnalité sera également ajoutée à la console Drupal .
la source
migrate_plus.migration.*
config
table.Commande drush pour objet de configuration de suppression:
drush config-delete <config_name>
.la source
drush -l your.site.domain config-delete <config_name>
drush cdel <config_name>
drush cr
after pour supprimer toutes les dépendances de configuration en cache, sinon vous obtiendrez un résultat ressemblant à ceci:Error: Call to a member function getConfigDependencyKey() on null
Vous pouvez utiliser les méthodes suivantes. Utilisez le code suivant dans hook_uninstall
OU
dans le fichier yml vous pouvez mettre les dépendances comme
alors drupal supprimera automatiquement ces configurations lors de la désinstallation de votre module, comme décrit par Berdir ici https://drupal.stackexchange.com/a/173879/10436
la source
Utilisation de la console drupal :
la source
drupal config:delete 'migrate_plus.migration.*'
drupal config:delete active 'name'
ou `drupal config: delete staging 'name' (avec un seul paramètre fourni, cela suppose que vous lui avez donné le type et vous pour le nom de la configuration.)Drupal :: configFactory () -> reset () ne supprime pas l'objet config. Pour cette course
Drupal::configFactory()->getEditable('field.storage.node.your_field_name')->delete()
la source
J'ai créé un module simple que vous pouvez utiliser pour supprimer des éléments de configuration.
https://www.drupal.org/project/config_delete
la source
Vous pouvez utiliser la console Drupal pour supprimer la configuration active avec
drupal config:delete active config_to_delete
.la source
Recherchez toutes les configurations répertoriées à l'aide de drush config-list Ensuite, identifiez la configuration que vous souhaitez supprimer. Utilisez la commande ci-dessous pour supprimer la configuration drush config-delete
la source
Je laisse ici un script Python minuscule (mais un peu trop élaboré) qui supprime les restes de configuration. Il repose sur
drush config-delete
.Devrait être exécuté comme ceci:
la source
Utilisez le module Installation facile pour éviter ces problèmes de configuration, ce module permettra de supprimer des configurations lors de la désinstallation d'un module, cela fonctionne même si la configuration d'un module ne contient pas de configuration forcée en yml ou non ajoutée dans un dossier optionnel .
la source
Désinstallez Active Configuration à partir du module personnalisé
J'ai rencontré le même problème en essayant de désinstaller des fichiers de configuration à partir d'un module personnalisé. J'ai un module personnalisé utilisé pour transmettre des fichiers de configuration personnalisés pour webform. Comme je ne suis pas parfait, je veux pouvoir désinstaller le module, éditer le code et le réinstaller. J'ai trouvé que si je référençais mon module personnalisé (my_module) dans la section dependencies /forced du fichier config / install yml, lorsque je désinstallais mon module, les fichiers de configuration le désinstallaient également.
la source
Toutes ces réponses recommandent de supprimer directement l'objet de configuration sous-jacent, mais la bonne façon consiste à supprimer l'entité via le système de stockage d'entités.
Par exemple, si vous avez un style d'image avec l'ID "grand" et que vous souhaitez le supprimer, procédez comme suit:
En procédant de cette façon, le noyau invoquera "predelete" avant la suppression de la configuration et "supprimera" les points d'ancrage après la suppression de la configuration, que d'autres modules pourront utiliser pour effectuer diverses opérations de nettoyage.
la source
Utilisez hook_uninstall pour supprimer la configuration lorsque le module est désinstallé.
Puis supprimez la configuration:
la source