logo

额外区块类型 (EBT) - 全新的布局构建器体验❗

额外区块类型 (EBT) - 样式化、可定制的区块类型:幻灯片、标签页、卡片、手风琴等更多类型。内置背景、DOM Box、JavaScript 插件的设置。立即体验布局构建的未来。

演示 EBT 模块 下载 EBT 模块

❗额外段落类型 (EPT) - 全新的 Paragraphs 体验

额外段落类型 (EPT) - 类似的基于 Paragraph 的模块集合。

演示 EPT 模块 滚动

滚动

Drupal 8 中的配置存储

03/10/2025, by Ivan

默认情况下,Drupal 8 中的配置信息存储在数据库中。

配置文件格式 (YAML)

扩展(模块、主题和安装配置文件)通过 YAML 文件提供配置信息。

下面是一个配置文件的示例:

some_string: 'Woo kittens!'
some_int: 42
some_bool: true

配置也可以是嵌套的。示例如下:

name: thumbnail
label: 'Thumbnail (100x100)'
effects:
  1cfec298-8620-4749-b100-ccb6c4500779:
    id: image_scale
    data:
      width: 100
      height: 100
      upscale: true
    weight: 0
    uuid: 1cfec298-8620-4749-b100-ccb6c4500779

配置架构

配置有对应的架构。这在 配置架构/元数据文档 中有详细描述。

扩展的默认配置

扩展(模块、主题或安装配置文件)如果要为其配置提供默认值,必须将这些配置存储在其 config/install 子目录下的 YAML 文件中。

如果扩展只需要基本的简单配置参数,所有默认设置可以放在一个文件 modulename.settings.yml 中。对于更复杂的设置,可以将配置拆分为多个文件。每个配置对象都必须存储在自己独立的 YAML 文件中,并且应由模块在写入配置时自动生成(不要尝试手动编写它们)。

如果需要为某些动态值(因此不能在 modulename.settings.yml 中设置)提供默认配置,请在 hook_install() 中实现。例如:

/**
 * Implements hook_install().
 */
function modulename_install() {
  // 为需要动态值的配置设置默认值。
  \Drupal::configFactory()->getEditable('modulename.settings')
    ->set('default_from_address', \Drupal::config('system.site')->get('mail'))
    ->save();
}

扩展的可选配置

扩展(模块或主题)的可选配置存储在其 config/optional 子目录中。

这些是依赖于扩展本身未显式依赖的其他组件的配置,因此它们只会在所有依赖项满足时才会被安装。

例如,在某个场景中,模块 A 有一个可选配置需要依赖模块 B。如果模块 A 先安装,而模块 B 稍后才安装,那么在模块 B 安装时,Drupal 会扫描模块 A 的 config/optional 目录以查找新发现的依赖关系,并在此时安装该配置。如果模块 B 永远不安装,那么该可选配置也不会安装。

活动配置存储

默认情况下,Drupal 8 将活动配置存储在数据库中,以提高性能和可扩展性。参见「默认活动配置」从文件存储改为数据库存储的详细信息。

从 YAML 更新配置到数据库

在开发过程中,如果需要将 YAML 文件中的配置更新到数据库,可以使用 drush config-import (cim) 命令。
您可以编辑位于活动配置目录(在 settings.php 中定义,例如 sites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync)中的 yml 配置文件,然后运行 drush cim。清除缓存(drush cr)即可查看更改。
如果您对 yml 文件中的设置感到满意,可以将它们复制到您的模块或主题中。