如何通过管理界面或Drush禁用模块?


10

在Drupal 7中,可以通过管理界面或Drush禁用模块drush pm-disable。在Drupal 8中,管理界面中的复选框为灰色,而Drush无法通过pm-disable禁用它们?如何使用Drush或通过管理UI禁用Drupal 8中的模块?还是我需要Drupal控制台来执行这些任务?

(对于错误地使用“以编程方式”一词所引起的混淆,很抱歉,它是指“通过命令行”的含义。)

Answers:



10

就像消息区域中Drupal 8状态中的管理界面一样,在Drupal 8中,如何安装和禁用模块的范例和概念也发生了变化,因为以前存在很多问题,原因是数据库遗留问题和数据不一致,同时禁用和启用模块等。

因此,鼓励用户宁可卸载模块,也不愿现在在D8中禁用它们。这并不意味着模块已经从Drupal根目录中消失或删除,但是它们已从数据库中完全删除,包括其配置。

尝试一下drush pm-uninstall module-name,您将看到想要的效果。

复选框显示为灰色,以便仍能够按照D7已知的方式启用和安装非活动模块。但是您不能再通过这种方式禁用它们。复选框也不应提供卸载,因为这样做很危险。

在管理界面中两次查看:您还将找到一个用于卸载模块的新标签。


2
如何在php中以编程方式执行此操作(例如:在MODULE.install中)
Guillaume Bois

以下答案告诉您如何以编程方式卸载模块,而在Drupal 8中则不禁用它
。– Duncanmoo

这应该在另一个问题中提出。以下答案与本网站上的问题主题无关。
jbitdrop

@jbitdrop –直到您更改标题为止。
leymannx '18年

3

由于该问题是通过编程方式提出的,所以这就是为什么我首先来到这里的原因,我将在其中添加一个工作代码段MYMODULE.install

/**
 * Uninstall Field UI.
 */
function MYMODULE_update_8001(&$sandbox) {

  \Drupal::service('module_installer')->uninstall(['field_ui']);

}

1
这应该在另一个问题中提出。答案与本网站上的问题主题无关。
jbitdrop

1
@jbitdrop-更改问题标题后,它似乎不再适合,是的。在您的帖子中,您仍然会询问如何以编程方式禁用模块。
leymannx

您是对的,但这恰恰相反。阅读您的答案后,我意识到我的问题可能是难以理解的(抱歉,不是母语)。这就是为什么我更改标题以使其更清晰。但是,从D7中的解释可以看出,我是在执行Drush命令和类似的事情,而不是如何为卸载例程准备模块。很抱歉造成混乱。也许我应该在其他地方再问合适的问题,然后将答案移到那儿:)(PS:如果从编程上来说是错误的词,我也必须在帖子中替换它)
jbitdrop
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.