Drupal8で独自の設定を定義・利用する

主題:独自の設定を定義する

他のモジュールの機能(node types、Views、fields、text formats等)を基にモジュールにデフォルト設定を適用する ことが可能です。

例えば、nodeモジュールにはノードタイプの設定があるので、独自のモジュールの中で利用するノードタイプとしてデフォルトのものを設定することができます。

nodeモジュールのコンテンツタイプの設定を利用したのと同じように、他のモジュールで使われている設定を独自のプラグインやエンティティやセッティングとして定義する必要があるかもしれません。Drupal8では、そのような細かい設定も簡単に定義することができます。

設定ファイル
モジュールの設定ファイルは、モジュールのconfig/install サブディレクトリに存在します。
例えば、/modules/example モジュールの場合、/modules/example/config/install/example.config.yml となります。YAMLファイルフォーマットで記述された独自モジュールの設定ファイルは、このディレクトリに配置します。
必須ではありませんが、独自モジュールの定義を行う設定ファイルには、モジュール名をファイル名につけることをお勧めします。例えば、exampleモジュールの設定ファイルは、example.settings.ymlとなります。ファイル名を settings.yml や system.settings.yml 等としてしまうと、他のファイルと名前の衝突が起きてしまうかもしれませんので注意してください。また、他のコンポーネントで利用される設定を定義することも可能です。例えば、独自のモジュールにデフォルトの設定をしてみましょう にあるノードタイプ exmapleを例に挙げると、設定ファイル名をnode.type.example_mytype.ymlとすることによって、nodeモジュールによりノードタイプの設定として扱われます。
(「.yml 」拡張子を除いた)設定ファイルの名前はシステムにおける設定名として呼ばれ、PHP APIを使って設定情報を参照する際に利用されます。
設定ファイルの構造
設定ファイルは、YAML ファイルフォーマットにして下さい。ニーズに基づいて設定ファイルを構成することができ、YAMLフォーマットにすること以外、特に制約はありません。例えば、ページコントローラからカスタム情報を出力する設定が必要な場合、設定ファイルでは以下のようなmessage キーと値の組み合わせが定義されます。

message: 'Hello'
langcode: 'en'


ファイルの言語コードを langcode キーとして定義することをお勧めします。これで、言語システムが翻訳用のテキストを抽出することが可能になります。langcode キーはこの目的のみに使われるので、他のどのような目的でもファイルのトップレベルで利用しないでください。
ファイル内のメッセージを翻訳可能にするには、以下の2ファイルを含める必要があります。

- /modules/example/config/schema/example.schema.yml
- /modules/example/example.config_translation.yml

1番目のファイルは、設定ファイルの翻訳対象部分を宣言することを可能にします。

example.config:
  type: config_object
  label: 'Example config'
  mapping:
    message:
      type: text
      label: 'Message'


2番目のファイルは、/admin/config/regional/config-translation に該当する翻訳フォームのリンクを追加します。

hello.config:
  title: 'Example Translatable config'
  base_route_name: example.admin.config
  names:
    - example.config


example.admin.config は、モジュールの管理画面へのルートパス名を示します。
ファイルには、ツリー構造でさらに複雑なリストおよびキーバリューのペア等を含めることも可能です。複雑な内容を含む構成ファイルの一例は、views.view.content.ymlファイル を参照してください。
設定を使用する
Drupal8では、PHP APIを利用して、設定の読み込み・書き込みを行うことが可能です。
Drupal::config() 静的メソッドを利用するのが一番簡単な方法です。

$config = \Drupal::config('example.settings');
// Will print 'Hello'.
print $config->get('message');
// Will print 'en'.
print $config->get('langcode');


設定を編集したり、新しい値で更新したい場合は、\Drupal::service('config.factory')->getEditable() メソッドが利用できます。

$config = \Drupal::service('config.factory')->getEditable('example.settings');

// Set and save new message value.
$config->set('message', 'Hi')->save();

// Now will print 'Hi'.
print $config->get('message');


参考:Configuration API in Drupal 8

翻訳元URL:https://www.drupal.org/node/2116839