Какая команда заменяет «набор переменных drush»?

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>). Alias: cset.

Так что я не совсем уверен, что у меня есть это право (поэтому комментарий и / или другой ответ от кого-то, кто делает это было бы здорово ...), но кажется, что конфигурация, которая включает в себя электронные письма:: contact.form.feedback recipients, update.settings notification.emailsи system.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

Источник: Плечо Drush 7 для Drupal 8 .

Примечание: Drush 7 больше не поддерживает Drupal 8, но это все еще применяется.

Джереми Дэвис
источник
1
Также есть Drush Cedit, который позволяет редактировать файл в редакторе. Я полагаю, вам понадобится Notification.emails.0 или около того, чтобы установить его в список, не уверен.
Бердир
Измененный формат может привести к сбою ваших уведомлений. В первоначальном случае emailэто массив, содержащий admin@example.com(например, несколько адресов электронной почты), но в результате вы превратились emailв строку, содержащую admin2@example.com(т.е. один адрес электронной почты).
Алма
@ Алма - Спасибо за внимание. Как мне убедиться, что он получен как массив?
Джереми Дэвис
1
Да. Решение Бердира работает. Поэтому вы должны выполнить команду «drush config-set update.settingstification.emails.0 admin@example.com». Только что сам проверил.
Алма
1
A drush config-listнапечатает все возможные категории конфигурации для вас, чтобы проанализировать. На случай, если вам когда-нибудь понадобится найти их всех.
Эрик Стейнборн,
5

Дополнительное наблюдение,

Чтобы найти идентификаторы для конфигурации, чтобы получить или установить,

  • Вы НЕ ДОЛЖНЫ догадываться об именах переменных компьютера, просто просматривая формы системных настроек. Раньше было совпадение 1: 1: 1 между элементом формы , видимым на многих экранах конфигурации, который $config['varname']вы можете вставить $settings.php, и drush vset / vget
  • Менеджер конфигурации в пользовательском интерфейсе (находится в admin/config/development/configuration/single) предоставляет что-то вроде браузера переменных.

Я хотел обновить мой, local.settings.phpчтобы всегда отключать агрегацию css & js при даунсинсинге.

D7:

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

D8:

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

(И обратите внимание, что этот тип переопределения НЕ будет отображаться в вашем пользовательском интерфейсе администратора или в 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")'
Параг
источник