禁用模块时,不会卸载hook_schema()

时间:2010-12-29 20:41:39

标签: drupal

我为自定义模块安装了一个模式,该模式在启用模块时创建表。但是当我禁用模块时,表仍然存在。我使用以下代码进行卸载:

function sample2_install() {
  if(!db_table_exists('contact')){
    drupal_install_schema('sample2');
  }
}

function sample2_uninstall() {
  drupal_uninstall_schema('sample2');
}

为什么表没有被卸载?

1 个答案:

答案 0 :(得分:6)

这里的区别在于禁用和卸载。禁用可以使模块设置随时可用。卸载会清除所有内容,直到重新启用它。

hook_uninstall()仅在您完全卸载模块时被调用 只有在禁用它时才会调用hook_disable()

如果在drupal_uninstall_schema()内,您可以致电hook_disable(),但我不建议这样做。这意味着当您禁用模块时,所有数据都会被删除 - 通常卸载就是您想要完全删除所有内容的时候。