คำสั่งที่แทนที่ 'drush variable-set' คืออะไร?


14

ใน Drupal 8 คำสั่ง Drush drush variable-setไม่ทำงานอีกต่อไป

จากการอ่าน ( ที่นี่ ) ดูเหมือนว่า Drupal 8 มีระบบ "การกำหนดค่า" ใหม่ที่แทนที่ตัวแปรเก่า (Drupal <= 7) "ตัวแปร" แต่อะไรคือคำสั่ง Drush ใหม่เพื่อให้ได้มาซึ่งจุดจบเดียวกัน

โดยเฉพาะฉันต้องการแปลงคำสั่ง:

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

สู่ Drupal8 / Drush8 ใหม่ที่เทียบเท่า ...

คำตอบ:


18

หลังจากการวิจัยเพิ่มเติมดูเหมือนว่าคำสั่งใหม่คือ:

  • drush config-set <config-name> <key>(รูปแบบเก่าอยู่ที่ไหนdrush variable-set <name> <value>) csetAlias:

ดังนั้นผมไม่แน่ใจว่าทั้งหมดที่ฉันมีสิทธินี้ (เพื่อให้การแสดงความคิดเห็นและ / หรือคำตอบอื่นจากคนที่ไม่จะดี ... ) แต่ดูเหมือนว่าการตั้งค่าที่มีอีเมล: contact.form.feedback recipients, และupdate.settings notification.emailssystem.site mail

การอัปเดตนี้เป็นผลลัพธ์สำหรับการสนทนาที่ดี (ด้านล่าง) โปรดทราบว่าการตั้งค่าบางอย่างเป็นอาร์เรย์ (แทนที่จะเป็นสตริง):

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

เพื่ออัปเดตสิ่งนี้คุณต้องเรียกใช้:

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

ที่มา: Leverage Drush 7 สำหรับ Drupal 8

หมายเหตุ: Drush 7 ไม่รองรับ Drupal 8 อีกต่อไป แต่ยังคงมีผลอยู่


1
นอกจากนี้ยังมีปุ่มลัดที่ช่วยให้คุณสามารถแก้ไขไฟล์ในโปรแกรมแก้ไขได้ ฉันเดาว่าคุณต้องมีการแจ้งเตือน. em.0 หรือมากกว่านั้นเพื่อตั้งเป็นรายการไม่แน่ใจ
Berdir

รูปแบบที่เปลี่ยนแปลงอาจทำให้การแจ้งเตือนของคุณล้มเหลว ในกรณีดั้งเดิมemailคืออาร์เรย์ที่มีadmin@example.com(เช่นที่อยู่อีเมลหลายแห่ง) แต่ในผลลัพธ์ของคุณคุณได้กลายemailเป็นสตริงที่มีadmin2@example.com(เช่นที่อยู่อีเมลเดียว)
แอลมา

@Alma - ขอบคุณสำหรับหัวขึ้น ฉันจะแน่ใจได้อย่างไรว่ามันถูกป้อนเป็นอาร์เรย์?
Jeremy Davis

1
ใช่. โซลูชันของ Berdir ทำงานได้ ดังนั้นคุณควรทำ "drush config-set update.settings notification.emails.0 admin@example.com" เพิ่งทดสอบด้วยตัวเองตอนนี้
แอลมา

1
A drush config-listจะพิมพ์ทุกประเภทของการกำหนดค่าที่เป็นไปได้เพื่อให้คุณแยกวิเคราะห์ ในกรณีที่คุณต้องการค้นหาพวกเขาทั้งหมด
Eric Steinborn

5

การติดตามเพิ่มเติม

ในการค้นหาตัวระบุสำหรับการกำหนดค่าที่จะได้รับหรือการตั้งค่า

  • คุณไม่สามารถเดาชื่อเครื่องของตัวแปรได้อีกต่อไปเพียงแค่ตรวจสอบแบบฟอร์มการตั้งค่าระบบ เคยมีการจับคู่แบบ 1: 1: 1 ระหว่างองค์ประกอบแบบฟอร์มที่เห็นบนหน้าจอตั้งค่าหลาย ๆ ตัว$config['varname']คุณสามารถใส่ลงไป$settings.phpและ drush vset / vget
  • เครื่องมือจัดการการกำหนดค่าใน ui (พบที่admin/config/development/configuration/single) ให้บางสิ่งบางอย่างของตัวแปรเบราว์เซอร์

ฉันต้องการอัปเดต local.settings.phpเป็นปิดใช้งานการรวม css & js ทุกครั้งเมื่อ downsyncing

D7:

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

D8:

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

(และโปรดทราบว่าการแทนที่ประเภทนี้จะไม่ปรากฏใน UI การดูแลระบบของคุณหรือในdrush config-get... แม้ว่าจะมีผล)


คำสั่ง Drush สำหรับปิดการใช้งานการรวมคือ: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx

3

สิ่งนี้ใช้ได้สำหรับฉัน มันเป็นคำสั่ง Drush PHP EVAL

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

ที่นี่มันถูกใช้เพื่อตั้งค่าสถานะของ MY_VARIABLE

คุณยังสามารถรับสถานะของตัวแปร:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.