我们的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() {}但是身体会添加两个字段并更新视图?
谢谢。
答案 0 :(得分:0)
如果您的配置中有新字段,您只需删除旧字段,然后在导入配置之前运行drush updb:
$field = \Drupal::entityTypeManager()->getStorage('field_config')->load('node.news.old_field');
if ($field) {
$field->delete();
}