Quelle est la commande qui remplace «drush variable-set»?


14

Dans Drupal 8, la commande Drush drush variable-setne fonctionne plus.

De la lecture ( ici ), il apparaît que Drupal 8 a un nouveau système de "configuration" qui remplace les anciennes "variables" (Drupal <= 7). Mais quelle est la nouvelle commande Drush pour atteindre les mêmes fins?

Plus précisément, je veux convertir les commandes:

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

au nouvel équivalent Drupal8 / Drush8 ...

Réponses:


18

Après quelques recherches supplémentaires, il semble que la nouvelle commande soit:

  • drush config-set <config-name> <key>(où était l'ancien format drush variable-set <name> <value>). Alias: cset.

Je ne suis pas tout à fait sûr que j'ai ce droit (si un commentaire et / ou une autre réponse de quelqu'un qui serait super ...), mais il semble que la configuration qui comprend des e - mails sont: contact.form.feedback recipients, update.settings notification.emailset system.site mail.

Cette mise à jour est le résultat d'une bonne discussion (ci-dessous). Notez que certains paramètres sont des tableaux (plutôt que des chaînes):

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

pour mettre à jour cela, vous devez exécuter:

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

Source: Tirez parti de Drush 7 pour Drupal 8 .

Remarque: Drush 7 ne prend plus en charge Drupal 8, mais cela s'applique toujours.


1
Il y a aussi drush cedit, qui vous permet d'éditer le fichier dans un éditeur. Je suppose que vous auriez besoin de notification.emails.0 ou plus pour le définir dans une liste, je ne sais pas.
Berdir

Le format modifié peut entraîner l'échec de vos notifications. Dans le cas d'origine emailest un tableau contenant admin@example.com(c'est-à-dire plusieurs adresses e-mail), mais dans votre résultat, vous vous êtes transformé emailen une chaîne contenant admin2@example.com(c'est-à-dire une seule adresse e-mail).
Alma

@Alma - Merci pour l'avertissement. Comment puis-je m'assurer qu'il est entré en tant que tableau?
Jeremy Davis

1
Oui. La solution de Berdir fonctionne. Vous feriez donc "drush config-set update.settings notification.emails.0 admin@example.com". Je viens de le tester moi-même maintenant.
Alma

1
A drush config-listimprimera toutes les catégories de configuration possibles pour que vous puissiez les analyser. Au cas où vous auriez besoin de les trouver tous.
Eric Steinborn

5

Suivi supplémentaire,

Pour trouver les identifiants pour la configuration à obtenir ou à définir,

  • Vous ne pouvez plus deviner les noms de machine des variables simplement en inspectant les formulaires de paramètres système. Auparavant, il y avait une correspondance 1: 1: 1 entre l'élément de formulaire vu sur de nombreux écrans de configuration, le que $config['varname']vous pouviez insérer $settings.phpet drush vset / vget
  • Le gestionnaire de configuration dans l'interface utilisateur (trouvé à admin/config/development/configuration/single) fournit quelque chose d'un navigateur de variables.

Je voulais mettre à jour mon local.settings.phppour toujours désactiver l'agrégation css & js lors de la synchronisation descendante.

D7:

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

D8:

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

(Et notez que ce type de remplacement NE SERA PAS affiché dans votre interface d'administration ou dans drush config-get... bien qu'il prenne effet)


La commande Drush pour désactiver l'agrégation est alors: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx

3

Cela a fonctionné pour moi. C'est une commande Drush PHP EVAL.

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

Ici, il est utilisé pour définir l'état de MY_VARIABLE

Vous pouvez également obtenir l'état d'une variable:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.