web-dev-qa-db-ja.com

コードでフィールド構成を読み込む方法

UIを使用してフィールドを定義し、カスタムモジュールでYAMLファイルを使用していくつかのフィールドを定義しました。例:

フィールドストレージはfield.storage.node.my_headingで定義されます。

langcode: en
status: true
dependencies:
  enforced:
    module:
      - my_module
id: node.my_heading
field_name: my_heading
entity_type: node
type: string
settings: {  }
module: core
locked: false
cardinality: 1
translatable: true
indexes: {  }
persist_with_no_fields: false
custom_storage: false

(エンティティにフィールドをアタッチする)フィールドインスタンスはfield.field.node.my_content_type.my_headingで定義されます。

langcode: en
status: true
dependencies:
  config:
    - field.storage.node.my_heading
    - node.type.my_content_type
id: node.my_content_type.my_heading
field_name: my_heading
entity_type: node
bundle: my_content_type
label: 'Heading'
description: 'An optional heading'
required: false
translatable: true
default_value: {  }
default_value_callback: ''
settings: {  }
field_type: string

このカスタムモジュールをインストールした後、コードでフィールド構成を取得するにはどうすればよいですか?

5
rudolfbyker

(Drupalでいつものように)用語は少し混乱しますが、ここに行きます:

フィールドストレージ構成は FieldStorageConfig で定義されます。これをロードするには、次のようにします。

$field = Drupal::entityTypeManager()->getStorage('field_storage_config')->load('node.my_field');

フィールドインスタンス構成は FieldConfig で定義されます。これをロードするには、次のようにします。

$field_instance = Drupal::entityTypeManager()->getStorage('field_config')->load('node.my_content_type.my_field');
9
rudolfbyker