Apa perintah yang menggantikan 'set variabel drush'?

14

Dalam Drupal 8 perintah Drush drush variable-settidak lagi berfungsi.

Dari membaca (di sini ) tampak bahwa Drupal 8 memiliki sistem "konfigurasi" baru yang menggantikan yang lama (Drupal <= 7) "variabel". Tapi apa perintah Drush baru untuk mencapai tujuan yang sama?

Secara khusus saya ingin mengonversi perintah:

drush variable-set site_mail someone@email.com
drush variable-set update_notify_emails someone@email.com

ke setara Drupal8 / Drush8 baru ...

Jeremy Davis
sumber

Jawaban:

18

Mengikuti beberapa penelitian lebih lanjut tampaknya perintah baru adalah:

  • drush config-set <config-name> <key>(tempat format lama drush variable-set <name> <value>). Alias: cset.

Jadi saya tidak benar-benar yakin bahwa saya memiliki hak ini (sehingga komentar dan / atau jawaban lain dari seseorang yang tidak akan menjadi besar ...), tetapi tampaknya bahwa konfigurasi yang meliputi email adalah: contact.form.feedback recipients, update.settings notification.emailsdan system.site mail.

Pembaruan ini adalah hasil untuk beberapa diskusi yang baik (di bawah). Perhatikan bahwa beberapa pengaturan adalah array (bukan string):

www/drupal8# drush config-get update.settings notification
'update.settings:notification':
  emails:
    - admin@example.com
  threshold: all

untuk memperbarui ini, Anda perlu menjalankan:

drush -y config-set update.settings notification.emails.0 admin2@example.com

Sumber: Leverage Drush 7 untuk Drupal 8 .

Catatan: Drush 7 tidak lagi mendukung Drupal 8, tetapi ini masih berlaku.

Jeremy Davis
sumber
1
Ada juga drush cedit, yang memungkinkan Anda mengedit file dalam editor. Saya kira Anda perlu notifikasi.emails.0 atau lebih untuk mengaturnya ke daftar, tidak yakin.
Berdir
Format yang diubah dapat menyebabkan notifikasi Anda gagal. Dalam kasus asli emailadalah array yang berisi [email protected](yaitu beberapa alamat email), tetapi dalam hasil Anda, Anda telah berubah emailmenjadi string yang berisi [email protected](yaitu alamat email tunggal).
Alma
@Alma - Terima kasih atas kepala. Bagaimana cara memastikan bahwa itu dimasukkan sebagai array?
Jeremy Davis
1
Iya. Solusi Berdir bekerja. Jadi, Anda akan melakukan "drush config-set update.settings notification.emails.0 [email protected]". Coba saja sendiri sekarang.
Alma
1
A drush config-listakan mencetak setiap kategori konfigurasi yang memungkinkan bagi Anda untuk diuraikan. Jika Anda perlu menemukan semuanya.
Eric Steinborn
5

Tindak lanjut tambahan,

Untuk menemukan pengidentifikasi untuk mendapatkan atau mengatur konfigurasi,

  • Anda TIDAK BISA PANJANG menebak nama mesin variabel hanya dengan memeriksa formulir pengaturan sistem. Dulu ada kecocokan 1: 1: 1 antara elemen bentuk yang terlihat di banyak layar konfigurasi, yang $config['varname']dapat Anda masukkan $settings.php, dan drush vset / vget
  • Manajer konfigurasi di ui (ditemukan di admin/config/development/configuration/single) menyediakan sesuatu dari browser variabel.

Saya ingin memperbarui saya local.settings.phpuntuk selalu menonaktifkan agregasi css & js saat downsyncing.

D7:

$conf['preprocess_css'] = FALSE;
$conf['preprocess_js'] = FALSE;

D8:

$config['system.performance']['css']['preprocess'] = 0;
$config['system.performance']['js']['preprocess'] = 0;

(Dan perhatikan bahwa jenis pengesampingan ini TIDAK AKAN ditampilkan di UI Admin Anda, atau di drush config-get... meskipun akan berlaku)

dman
sumber
Perintah drush untuk menonaktifkan agregasi adalah: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx
3

Ini berhasil untuk saya. Ini adalah perintah Drush PHP EVAL.

drush ev '\Drupal::state()->set("MY_VARIABLE", "MY_VALUE")'

Di sini digunakan untuk mengatur status MY_VARIABLE

Anda juga bisa mendapatkan status variabel:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
Parag
sumber