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 ...

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.


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 admin@example.com(yaitu beberapa alamat email), tetapi dalam hasil Anda, Anda telah berubah emailmenjadi string yang berisi admin2@example.com(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 admin@example.com". 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)


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")'
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.