Saya sedang menulis modul khusus untuk Drupal 8. Ini mendefinisikan objek konfigurasi penyimpanan bidang, dalam file bernama modules / mymod / config / install / field.storage.bloom_stem.bs_twitter_ac.yml.
Masalahnya adalah ini tidak dihapus ketika saya menghapus modul; rupanya tertinggal karena, ketika saya menginstal ulang modul, saya mendapatkan crash.
drush -y pm-uninstall mymod
drush cr
drush -y en mymod
pengecualian 'Drupal \ Core \ Config \ PreExistingConfigException' dengan pesan 'Objek konfigurasi (field.storage.bloom_stem.bs_twitter_ac) yang disediakan oleh mymod sudah ada dalam konfigurasi aktif'
Jadi sepertinya saya perlu beberapa cara menghapus objek konfigurasi ini secara manual. Apakah saya perlu memberikan beberapa kode lagi yang menghapusnya ketika modul dihapus instalasinya?
8
entities
configuration-management
artfulrobot
sumber
sumber
Jawaban:
Cara termudah untuk melakukan ini saat ini adalah menggunakan
drush php
(ataucore-cli
) untuk membuka sesi interaktif.Kemudian gunakan:
Fungsi ini akan ditambahkan ke konsol Drupal juga.
sumber
migrate_plus.migration.*
config
tabel.Perintah Drush untuk menghapus objek konfigurasi:
drush config-delete <config_name>
.sumber
drush -l your.site.domain config-delete <config_name>
drush cdel <config_name>
drush cr
setelahnya untuk menghapus semua dependensi konfigurasi yang di-cache jika tidak, Anda mungkin mendapatkan sesuatu yang terlihat seperti ini:Error: Call to a member function getConfigDependencyKey() on null
Anda dapat menggunakan metode berikut. Gunakan kode berikut di hook_uninstall
ATAU
dalam file yml Anda bisa meletakkan dependensi seperti
maka drupal akan secara otomatis menghapus konfigurasi ini untuk menghapus modul Anda seperti dijelaskan oleh Berdir di sini https://drupal.stackexchange.com/a/173879/10436
sumber
Menggunakan konsol drupal :
sumber
drupal config:delete 'migrate_plus.migration.*'
drupal config:delete active 'name'
atau `drupal config: delete staging 'name' (dengan hanya satu parameter yang disediakan, ia akan menganggap Anda telah memberikan jenis dan meminta Anda untuk nama konfigurasi.)Drupal :: configFactory () -> reset () tidak menghapus objek config. Untuk lari ini
Drupal::configFactory()->getEditable('field.storage.node.your_field_name')->delete()
sumber
Saya membuat modul sederhana yang dapat Anda gunakan untuk menghapus item konfigurasi.
https://www.drupal.org/project/config_delete
sumber
Anda dapat menggunakan konsol Drupal untuk menghapus konfigurasi aktif, dengan
drupal config:delete active config_to_delete
.sumber
Cari semua konfigurasi yang terdaftar menggunakan drush config-list Kemudian identifikasi konfigurasi yang ingin Anda hapus. Gunakan perintah di bawah ini untuk menghapus konfigurasi drush config-delete
sumber
Saya meninggalkan skrip Python kecil (namun sedikit over-engineered) yang menghapus sisa konfigurasi. Itu bergantung
drush config-delete
.Harus dieksekusi seperti ini:
sumber
Gunakan Mudah Install modul untuk menghindari hal ini masalah konfigurasi, modul ini akan memungkinkan untuk menghapus konfigurasi saat menghapus modul, bekerja bahkan jika konfigurasi modul ini tidak mengandung ditegakkan di YML atau tidak konfigurasi ditambahkan dalam opsional folder.
sumber
Hapus Instalasi Konfigurasi Aktif dari Modul Kustom
Saya mengalami masalah yang sama ketika mencoba mencopot file konfigurasi dari modul khusus. Saya memiliki modul khusus yang digunakan untuk mengirimkan file konfigurasi khusus untuk formulir web. Karena saya tidak sempurna, saya ingin dapat menghapus modul, mengedit kode dan menginstal ulang. Saya menemukan jika saya mereferensikan modul khusus saya (my_module) di bagian dependensi / yang dipaksakan dalam file config / install yml, ketika saya menghapus modul saya, file konfigurasi juga akan dihapus.
sumber
Semua jawaban ini merekomendasikan untuk menghapus objek konfigurasi yang mendasarinya secara langsung, tetapi cara yang benar adalah dengan menghapus entitas melalui sistem penyimpanan entitas.
Misalnya, jika Anda memiliki gaya gambar dengan ID "besar" dan Anda ingin menghapusnya, Anda harus melakukan ini:
Melakukannya dengan cara ini, core akan memanggil "pra-setel" sebelum konfigurasi dihapus dan "hapus" kait setelah konfigurasi dihapus, yang mana modul lain mungkin bergantung untuk melakukan berbagai operasi pembersihan.
sumber
Gunakan hook_uninstall untuk menghapus konfigurasi, ketika modul dihapus instalasinya.
Kemudian hapus konfigurasi:
sumber