Was ist der Befehl, der 'drush variable-set' ersetzt?

14

In Drupal 8 drush variable-setfunktioniert der Drush-Befehl nicht mehr.

Aus der Lektüre ( hier ) geht hervor, dass Drupal 8 ein neues "Konfigurations" -System hat, das die alten (Drupal <= 7) "Variablen" ersetzt. Aber was ist der neue Drush-Befehl, um die gleichen Ziele zu erreichen?

Insbesondere möchte ich die Befehle konvertieren:

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

zum neuen Drupal8 / Drush8-Äquivalent ...

Jeremy Davis
quelle

Antworten:

18

Nach weiteren Recherchen scheint der neue Befehl zu lauten:

  • drush config-set <config-name> <key>(wo das alte Format war drush variable-set <name> <value>). Alias: cset.

Also habe ich nicht ganz sicher bin , dass ich dieses Recht habe (so Kommentar und / oder eine andere Antwort von jemandem, der groß macht wäre ...), aber es scheint , dass die Config , die E - Mails enthält , ist: contact.form.feedback recipients, update.settings notification.emailsund system.site mail.

Dieses Update ist das Ergebnis einiger guter Diskussionen (siehe unten). Beachten Sie, dass es sich bei einigen Einstellungen um Arrays handelt (und nicht um Zeichenfolgen):

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

Um dies zu aktualisieren, müssen Sie Folgendes ausführen:

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

Quelle: Leverage Drush 7 für Drupal 8 .

Hinweis: Drush 7 unterstützt Drupal 8 nicht mehr, dies gilt jedoch weiterhin.

Jeremy Davis
quelle
1
Es gibt auch drush cedit, mit dem Sie die Datei in einem Editor bearbeiten können. Ich vermute, Sie benötigen notification.emails.0 oder so, um es auf eine Liste zu setzen, nicht sicher.
Berdir
Das geänderte Format kann dazu führen, dass Ihre Benachrichtigungen fehlschlagen. Im ursprünglichen Fall emailhandelt es sich um ein Array mit [email protected](dh mehreren E-Mail-Adressen), in Ihrem Ergebnis haben Sie sich jedoch emailin eine Zeichenfolge mit [email protected](dh einer einzelnen E-Mail-Adresse) verwandelt .
Alma
@Alma - Danke für die Köpfe hoch. Wie stelle ich sicher, dass es als Array eingegeben wird?
Jeremy Davis
1
Ja. Berdir's Lösung funktioniert. Also machst du "drush config-set update.settings notification.emails.0 [email protected]". Habe es jetzt selbst getestet.
Alma
1
A drush config-listdruckt alle möglichen Konfigurationskategorien aus, die Sie analysieren können. Für den Fall, dass Sie alle finden müssen.
Eric Steinborn
5

Zusätzliches Follow-up,

So finden Sie die Bezeichner für die abzurufende oder einzustellende Konfiguration:

  • Sie können die Maschinennamen von Variablen NICHT MEHR erraten, indem Sie die Systemeinstellungsformulare überprüfen. Früher gab es eine 1: 1: 1-Übereinstimmung zwischen dem Formularelement, das auf vielen Konfigurationsbildschirmen angezeigt wurde, und dem Element, in das $config['varname']Sie $settings.phpvset / vget einfügen konnten
  • Der Konfigurationsmanager in der Benutzeroberfläche (zu finden unter admin/config/development/configuration/single) bietet so etwas wie einen variablen Browser.

Ich wollte mein aktualisieren local.settings.php, um die CSS- und JS-Aggregation beim Downsynchronisieren immer zu deaktivieren.

D7:

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

D8:

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

(Und beachten Sie, dass diese Art der Überschreibung NICHT in Ihrer Admin-Benutzeroberfläche oder in drush config-get... angezeigt wird, obwohl sie wirksam wird.)

dman
quelle
Der Drush-Befehl zum Deaktivieren der Aggregation lautet dann: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx
3

Das hat bei mir funktioniert. Es ist ein Drush PHP EVAL Befehl.

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

Hier wird der Status von MY_VARIABLE festgelegt

Sie können auch erhalten den Zustand einer Variablen:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
Parag
quelle