Drupal 8での設定の保存
デフォルトでは、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ファイルに配置する必要があります。
拡張機能に基本的なシンプル設定オプションのみが必要な場合は、すべてのデフォルト設定を1つのmodulename.settings.ymlファイルに配置できます。より複雑な設定の場合は、設定を複数のファイルに分割できます。各設定オブジェクトは独自のYAMLファイルに配置する必要があり、モジュールが設定を書き込むときに生成する必要があります(手動で書き込もうとしないでください)。
動的な値を必要とする設定(したがってmodulename.settings.ymlに設定できない)のデフォルト値を提供するには、hook_install()で行います。例:
/**
* Implements hook_install().
*/
function modulename_install() {
// Set default values for config which require dynamic values.
\Drupal::configFactory()->getEditable('modulename.settings')
->set('default_from_address', \Drupal::config('system.site')->get('mail'))
->save();
}
拡張機能のオプション設定
拡張機能(モジュールまたはテーマ)のオプション設定項目は、config/optionalサブディレクトリに保存されます。
これらは、拡張機能自体が明示的に依存していないものに依存する設定項目であり、すべての依存関係が満たされた場合にのみインストールされます。
たとえば、モジュールAがモジュールBを必要とするオプション設定を持ち、最初にモジュールAがインストールされ、しばらくしてからモジュールBがインストールされるシナリオでは、その時点でモジュールAのconfig/optionalディレクトリが新しく検出された依存関係についてスキャンされ、設定がそのときにインストールされます。モジュールBが決してインストールされない場合、オプション設定項目もインストールされません。
アクティブな設定ストレージ
デフォルトでは、Drupal 8はパフォーマンスとスケーラビリティのためにアクティブな設定をデータベースに保存します。詳細については、「デフォルトのアクティブ設定」がファイルストレージからDBストレージに変更されましたを参照してください。
YAMLからデータベースへの設定の更新
開発中に設定をYAMLからデータベースに更新する必要がある場合は、drush config-import(cim)コマンドを使用できます。
アクティブな設定フォルダー(settings.phpファイルで定義されている、たとえばsites/default/files/config_6dh1U_2YKLGrrh5oLxAgobbledygook/sync)の設定ymlファイルを編集してから、drush cimを実行します。キャッシュをクリアして(drush cr)、変更を確認します。
ymlファイルの設定に満足したら、モジュールまたはテーマにコピーします。