替换“ drush variable-set”的命令是什么?


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 ...

Answers:


18

经过更多研究后,新命令似乎是:

  • drush config-set <config-name> <key>(旧格式为drush variable-set <name> <value>)。别名:cset

所以我不能完全肯定我有这个权利(这样的评论和/或从别人另一个答案谁做将是巨大的...),但似乎包含电子邮件的配置是:contact.form.feedback recipientsupdate.settings notification.emailssystem.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

来源:Drupal 8的Deveral Drush 7

注意:Drush 7不再支持Drupal 8,但这仍然适用。


1
还有drush cedit,可让您在编辑器中编辑文件。我猜您需要将notification.emails.0设置为列表,不确定。
Berdir

更改的格式可能会导致您的通知失败。在原始情况下,email是一个包含admin@example.com(即多个电子邮件地址)的数组,但是结果却email变成了一个包含admin2@example.com(即单个电子邮件地址)的字符串。
阿尔玛

@Alma-感谢您的注意。如何确保将其作为数组输入?
杰里米·戴维斯

1
是。Berdir的解决方案有效。因此,您需要执行“将配置集更新.settings notification.emails.0 admin@example.com拖入”。现在就自己测试一下。
阿尔玛

1
A drush config-list将打印所有可能的配置类别,以供您解析。万一您需要全部找到它们。
埃里克·斯坦伯恩

5

其他后续行动,

要找到要获取或设置的配置的标识符,

  • 仅通过检查系统设置表格,您就无法再猜测变量的机器名称了。在许多配置屏幕上$config['varname']可以看到的表单元素之间曾经存在1:1:1的匹配,您可以将其放进去$settings.php,然后再拉vset / vget
  • ui中的配置管理器(位于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")'
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.