'Drush değişken seti'nin yerine geçen komut nedir?


14

Drupal 8'de Drush komutu drush variable-setartık çalışmıyor.

Okumadan ( burada ) Drupal 8'in eski (Drupal <= 7) "değişkenlerin" yerini alan yeni bir "yapılandırma" sistemi olduğu anlaşılıyor. Fakat aynı amaçlara ulaşmak için yeni Drush komutu nedir?

Özellikle komutları dönüştürmek istiyorum:

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

yeni Drupal8 / Drush8 eşdeğerine ...

Yanıtlar:


18

Biraz daha araştırma yaptıktan sonra yeni komut şöyle görünüyor:

  • drush config-set <config-name> <key>(eski biçimin olduğu yerde drush variable-set <name> <value>). Alias: cset.

: Pek emin ben bu hakkı olduğuna değilim Yani, ancak (yorum ve / veya ... çok iyi olurdu olan birinden başka bir yanıt böylece) o e-postaları içerir yapılandırma gibi görünüyor contact.form.feedback recipients, update.settings notification.emailsve system.site mail.

Bu güncelleme bazı iyi tartışmaların sonucudur (aşağıda). Bazı ayarların dizeler yerine diziler olduğunu unutmayın:

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

bunu güncellemek için çalıştırmanız gerekir:

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

Kaynak: Drupal 8 için Kaldıraç Drush 7 .

Not: Drush 7 artık Drupal 8'i desteklememektedir, ancak yine de geçerlidir.


1
Ayrıca bir düzenleyicide dosyayı düzenlemenizi sağlayan dred cedit de var. Sanırım bir listeye ayarlamak için report.emails.0 ya da daha fazlasına ihtiyacınız olacak, emin değilim.
Berdir

Değiştirilen biçim, bildirimlerinizin başarısız olmasına neden olabilir. Orijinal durumda (yani birden çok e-posta adresi) emailiçeren bir dizidir admin@example.com, ancak sonuçta emailiçeren bir dizeye admin2@example.com(yani tek e-posta adresi) dönüştünüz.
Alma

@Alma - Uyarı için teşekkürler. Dizi olarak girildiğinden nasıl emin olabilirim?
Jeremy Davis

1
Evet. Berdir'in çözümü işe yarıyor. Böylece "drush config-set update.settings bildirimi.emails.0 admin@example.com" yapmalısınız. Şimdi kendim test ettim.
Alma

1
A drush config-list, ayrıştırmanız için olası tüm yapılandırma kategorilerini yazdıracaktır. Eğer hepsini bulmak için ihtiyacınız varsa.
Eric Steinborn

5

Ek takip,

Alınacak veya ayarlanacak olan yapılandırmanın tanımlayıcılarını bulmak için,

  • Sadece sistem ayarları formlarını inceleyerek değişkenlerin makine adlarında daha uzun tahmin yapamazsınız. Eskiden birçok yapılandırma ekranında görülen form öğesi arasında 1: 1: 1 eşleşme vardı , vset / vget $config['varname']içine koyabilirsiniz $settings.phpve
  • Kullanıcı admin/config/development/configuration/singlearabirimindeki (adresinde bulunan ) yapılandırma yöneticisi değişken bir tarayıcı sunar.

Ben local.settings.phpaşağı doğru zaman css & js toplama her zaman devre dışı bırakmak benim güncellemek istedim .

D7:

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

D8:

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

(Ve bu tür geçersiz kılmanın Yönetici arayüzünüzde görünmeyeceğini veya drush config-getetkili olacağını unutmayın)


Toplulaştırmayı devre dışı bırakma komutu: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx

3

Bu benim için çalıştı. Bu bir Drush PHP EVAL komutudur.

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

Burada MY_VARIABLE durumunu ayarlamak için kullanılıyor

Ayrıca bir değişkenin durumunu da alabilirsiniz :

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.