フィールドインスタンスの設定を取得する


8

field_info_instance()Drupal 8に相当するものは何ですか?

デフォルトのフィールド設定は、field.field.ENTITYTYPE.BUNDLE.FIELDNAME.ymlのようなファイルに構成として保存されますが、現在の値を取得するにはどうすればよいですか?

回答:


9

entity_field.managerサービスを使用すると、BaseFieldDefinitionクラスの配列を取得できます。このサービスも挿入可能ですが、作業コードをコピーして貼り付ける場合は、次の操作を実行できます。

$bundle_fields = \Drupal::getContainer()->get('entity_field.manager')->getFieldDefinitions($entity_type, $bundle);
$field_definition = $bundle_fields[$field_name];
$catalog_id = $field_definition->getSetting($setting_name);

4
エンティティがあり、それを使用している場合は、$ entity-> getFieldDefinitions()を使用してエンティティオブジェクトのフィールド定義にアクセスすることもできます。
Berdir

2

フィールドインスタンスの使用:

$settings = $field->getFieldDefinition()->getSettings();

たとえば、フィールドウィジェットでは:

public function formElement(FieldItemListInterface $items, $delta, array $element, array &$form, FormStateInterface $form_state) {
  $element = [];

  // Get the settings.
  $settings = $items[$delta]->getFieldDefinition()->getSettings();

  // ... build render array

  return $element;
}

0

フィールド定義からタイプとラベルを取得したいと思いました。これは機能しませんでした:

$setting_name = 'label';
$label = $field_definition->getSetting($setting_name);

これはうまくいきました:

$label = $field_definition->getLabel();
$type = $field_definition->getType();

0

フィールド構成を取得する最も簡単な方法は、EntityTypeManagerを使用することです。

$entity_type = 'node';// node, taxonomy_term, taxonomy_vocabulary, ...
$bundle = 'article';// the content type machine name
$field = 'field_article_tags';// the field machine name

$fieldConfig =  \Drupal::entityTypeManager()
  ->getStorage('field_config')
  ->load($entity_type . '.' . $bundle . '.' . $field);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.