我有一个定制模块,我的模块,将创建自定义块,block_test和block_test2上的mymodule_install()。
卸载模块时,我希望删除mymodule创建的任何块。如何删除正在卸载的模块生成的块?
drush命令(本地开发):
drush pmu mymodule -yvmymodule.uninstall()
function mymodule_uninstall() {
// Delete Blocks generated by module.
/** @var \Drupal\Core\Entity\EntityStorageInterface $block_storage */
$block_storage = \Drupal::service('entity_type.manager')->getStorage('block');
/** @var \Drupal\block\Entity\Block[] $blocks */
$blocks = $block_storage->loadMultiple();
foreach ($blocks as $block) {
// I am stuck here.
}
}发布于 2018-08-04 08:29:22
是的,那么最好遵循上面的强制配置依赖项部分,如果您使用固定的uuid创建内容块,那么您可以将块配置实体放在您的config/install文件夹中,并在其中解释配置依赖项,并且应该自动卸载它。
至少配置实体,如果您想要删除block_content实体,那么使用$block_content = \Drupal::service('entity.repository')->loadEntityByUuid('block_content', 'YOUR_UUID'); $block_content->delete()通过UUID加载它们
https://drupal.stackexchange.com/questions/266699
复制相似问题