Lệnh thay thế 'bộ biến đổi drush' là gì?


14

Trong Drupal 8, lệnh Drush drush variable-setkhông còn hoạt động.

Từ việc đọc ( ở đây ), có vẻ như Drupal 8 có một hệ thống "cấu hình" mới thay thế các "biến" cũ (Drupal <= 7). Nhưng lệnh Drush mới để đạt được kết thúc tương tự là gì?

Cụ thể tôi muốn chuyển đổi các lệnh:

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

tương đương với Drupal8 / Drush8 mới ...

Câu trả lời:


18

Sau một số nghiên cứu khác, có vẻ như lệnh mới là:

  • drush config-set <config-name> <key>(nơi định dạng cũ là drush variable-set <name> <value>). Bí danh : cset.

Vì vậy, tôi không hoàn toàn chắc chắn rằng mình có quyền này (vì vậy bình luận và / hoặc câu trả lời khác từ một người nào đó sẽ rất tuyệt ...), nhưng có vẻ như cấu hình bao gồm email là : contact.form.feedback recipients, update.settings notification.emailssystem.site mail.

Bản cập nhật này là kết quả cho một số thảo luận tốt (bên dưới). Lưu ý rằng một số cài đặt là mảng (thay vì chuỗi):

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

để cập nhật cái này bạn cần chạy:

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

Nguồn: Đòn bẩy Drush 7 cho Drupal 8 .

Lưu ý: Drush 7 không còn hỗ trợ Drupal 8, nhưng điều này vẫn được áp dụng.


1
Ngoài ra còn có drush cedit, cho phép bạn chỉnh sửa tệp trong trình chỉnh sửa. Tôi đoán bạn cần thông báo.emails.0 hoặc lâu hơn để đặt nó vào danh sách, không chắc chắn.
Berdir

Định dạng thay đổi có thể khiến thông báo của bạn không thành công. Trong trường hợp ban đầu emaillà một mảng chứa admin@example.com(tức là nhiều địa chỉ email), nhưng trong kết quả của bạn, bạn đã biến emailthành một chuỗi chứa admin2@example.com(tức là một địa chỉ email duy nhất).
Alma

@ Alma - Cảm ơn vì đã ngẩng cao đầu. Làm thế nào để tôi chắc chắn rằng nó được nhập dưới dạng một mảng?
Jeremy Davis

1
Đúng. Giải pháp của Berdir hoạt động. Vì vậy, bạn sẽ thực hiện "drush config-set update.sinstall notify.emails.0 admin@example.com". Chỉ cần thử nghiệm bản thân nó bây giờ.
Alma

1
A drush config-listsẽ in mọi danh mục cấu hình có thể để bạn phân tích. Trong trường hợp bạn đang có nhu cầu tìm kiếm tất cả.
Eric Steinborn

5

Theo dõi bổ sung,

Để tìm các định danh cho cấu hình cần lấy hoặc đặt,

  • Bạn không thể đoán lâu hơn tên máy của các biến chỉ bằng cách kiểm tra các biểu mẫu cài đặt hệ thống. Đã từng có một trận đấu 1: 1: 1 giữa thành phần biểu mẫu được thấy trên nhiều màn hình cấu hình, $config['varname']bạn có thể đặt vào $settings.phpvà vush / vget drush
  • Trình quản lý cấu hình trong ui (tìm thấy tại admin/config/development/configuration/single) cung cấp một cái gì đó của một trình duyệt biến.

Tôi muốn cập nhật local.settings.phpđể luôn vô hiệu hóa tập hợp css & js khi không đồng bộ hóa.

D7:

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

D8:

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

(Và lưu ý rằng loại ghi đè này S NOT KHÔNG hiển thị trong Giao diện người dùng quản trị của bạn hoặc trong drush config-get... mặc dù nó sẽ có hiệu lực)


Lệnh Drush để vô hiệu hóa tập hợp sau đó là: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx

3

Điều này làm việc cho tôi. Đó là lệnh Drush PHP EVAL.

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

Ở đây, nó được sử dụng để đặt trạng thái MY_VARIABLE

Bạn cũng có thể lấy trạng thái của một biến:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.