Qual é o comando que substitui 'drush variable-set'?


14

No Drupal 8, o comando Drush drush variable-setnão funciona mais.

Pela leitura ( aqui ), parece que o Drupal 8 possui um novo sistema de "configuração" que substitui as "variáveis" antigas (Drupal <= 7). Mas qual é o novo comando Drush para alcançar os mesmos fins?

Especificamente, quero converter os comandos:

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

para o novo Drupal8 / Drush8 equivalente ...

Respostas:


18

Após mais pesquisas, parece que o novo comando é:

  • drush config-set <config-name> <key>(onde estava o formato antigo drush variable-set <name> <value>). Alias: cset.

Então eu não estou totalmente certo de que tenho esse direito (assim comentário e / ou outra resposta de alguém que faz seria ótimo ...), mas parece que a configuração que inclui e-mails são: contact.form.feedback recipients, update.settings notification.emailse system.site mail.

Esta atualização é o resultado de uma boa discussão (abaixo). Observe que algumas configurações são matrizes (em vez de cadeias):

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

para atualizar isso, você precisa executar:

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

Fonte: Alavancar Drush 7 para Drupal 8 .

Nota: O Drush 7 não suporta mais o Drupal 8, mas isso ainda se aplica.


1
Há também o drush cedit, que permite editar o arquivo em um editor. Acho que você precisaria de notification.emails.0 ou mais para defini-lo como uma lista, não tenho certeza.
Berdir 02/07/2015

O formato alterado pode causar falhas nas notificações. No caso original, emailhá uma matriz que contém admin@example.com(por exemplo, vários endereços de email), mas como resultado você se transformou emailem uma string contendo admin2@example.com(por exemplo, um endereço de email único).
Alma

@ Alma - Obrigado pela atenção. Como garantir que ele seja inserido como uma matriz?
Jeremy Davis

1
Sim. A solução de Berdir funciona. Então você faria "drush config-set update.settings notification.emails.0 admin@example.com". Apenas testei agora.
Alma

1
A drush config-listimprimirá todas as categorias de configuração possíveis para você analisar. Caso você precise encontrar todos eles.
Eric Steinborn 8/08/16

5

Acompanhamento adicional,

Para encontrar os identificadores para a configuração obter ou definir,

  • Você não pode mais adivinhar os nomes das variáveis ​​das máquinas apenas examinando os formulários de configurações do sistema. Costumava haver uma correspondência 1: 1: 1 entre o elemento de formulário visto em muitas telas de configuração, o que $config['varname']você poderia colocar $settings.phpe drush vset / vget
  • O gerenciador de configuração na interface do usuário (encontrado em admin/config/development/configuration/single) fornece uma espécie de navegador variável.

Eu queria atualizar o meu local.settings.phppara sempre desativar a agregação de css e js ao fazer downsyncing.

D7:

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

D8:

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

(Observe que esse tipo de substituição NÃO aparecerá na interface do usuário do administrador ou em drush config-get... embora entre em vigor)


Drush comando para desativar a agregação, então, é: drush -y config-set system.performance css.preprocess 0&&drush -y config-set system.performance js.preprocess 0
leymannx

3

Isso funcionou para mim. É um comando Drush PHP EVAL.

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

Aqui está sendo usado para definir o estado de MY_VARIABLE

Você também pode obter o estado de uma variável:

drush ev 'echo \Drupal::state()->get("MY_VARIABLE")'
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.