需要Drupal 8 hook_update_n代码示例

时间:2017-08-17 18:57:30

标签: drupal drupal-modules drupal-8

我们的Drupal 8应用程序有一个现有的自定义模块,可以创建内容类型和视图。 "新闻"模块在我们的生产环境中运行良好;已经使用它创建了许多内容。

现在已经要求增强功能:2个新字段和视图更改。我在开发环境中使用管理界面进行了更改,但是我需要将这些更改放入模块的版本控制代码中,以便在新的网站实例中,安装后无需记住更改UI模块。

The fields:
field_show_on_page, Field Type: List (text)
field_news_dateline, Field Type: Date
View:
The change in the view is on what field the sorting is done.

导出字段和查看配置并将它们添加到模块> config>安装文件夹会很简单,但是要获取更改,需要卸载并重新安装模块,这样才能解决问题。无需删除新闻内容即可完成,这是不可接受的。

我知道可以在news.install文件中的hook_update_N中完成更改。但是我找不到足够接近这个需要的这个函数的例子。我理解该函数应该写成:

news_update_8001() {}
但是身体会添加两个字段并更新视图?

谢谢。

1 个答案:

答案 0 :(得分:0)

如果您的配置中有新字段,您只需删除旧字段,然后在导入配置之前运行drush updb:

$field = \Drupal::entityTypeManager()->getStorage('field_config')->load('node.news.old_field');
if ($field) {
    $field->delete();
}