web-dev-qa-db-ja.com

カスタムエンティティのエンティティ参照として分類用語をプログラムで追加する

プログラムで作成したカスタムエンティティへのエンティティ参照として、taxonomy_termを追加するのに本当に苦労しています。

BaseFieldDefinitionに基づいた私の構成は次のとおりです(語彙の名前は「専門」です:

$fields['speciality_field'] = BaseFieldDefinition::create('entity_reference')
  ->setLabel(t('speciality'))
  ->setRevisionable(TRUE)
  ->setSetting('target_type', 'taxonomy_term')
  >setSetting('handler_settings', ['target_bundles' => ['specialite' => 'specialite']])
  ->setSetting('handler', 'default')
  ->setTranslatable(TRUE)
  ->setDisplayOptions('view', array(
    'label' => 'hidden',
    'type' => 'author',
    'weight' => 0,
  ))
  ->setDisplayOptions('form', array(
    'type' => 'entity_reference_autocomplete',
    'weight' => 5,
    'settings' => array(
      'match_operator' => 'CONTAINS',
      'size' => '10',
      'autocomplete_type' => 'tags',
      'placeholder' => '',
    ),
  ))
  ->setDisplayConfigurable('form', TRUE)
  ->setDisplayConfigurable('view', TRUE);

このコードは機能しません、私が欠けているものを見つけるのを手伝ってください、またはhandler_settingsのさまざまな値を説明する適切なドキュメントにリダイレクトしてください

どうもありがとうございます。

4
Asy

ありがとう、4k4の答えはとても役に立ちました。私の問題は、分類法の用語を参照したい自分のフィールドで、すでに作成していて、データベースに直接ドロップしたことでした。これを行うには正しい方法ではないようで、私はそれを再作成するのにとても苦労していました。だから私のモジュール(すべてのデータを削除した後)をunisntallし、それを再インストールした後、このコードは完全に機能し、分類用語への参照を持っています:

$fields['speciality'] = BaseFieldDefinition::create('entity_reference')
  ->setSetting('target_type', 'taxonomy_term')
  ->setSetting('handler', 'default:taxonomy_term')
  ->setSetting('handler_settings', 
      array(
    'target_bundles' => array(
     'specialite' => 'specialite'
    )))
  ->setDisplayOptions('view', array(
    'label' => 'hidden',
    'type' => 'author',
    'weight' => 0,
  ))
  ->setDisplayOptions('form', array(
    'type' => 'entity_reference_autocomplete',
    'weight' => 3,
    'settings' => array(
      'match_operator' => 'CONTAINS',
      'size' => '10',
      'autocomplete_type' => 'tags',
      'placeholder' => '',
    ),
  ))
  ->setDisplayConfigurable('form', TRUE)
  ->setDisplayConfigurable('view', TRUE);

PS:専門は私の語彙の名前です

8
Asy

Uiで分類フィールドを追加すると、ハンドラ設定drupal generatesを使用できます。

settings:
  handler: 'default:taxonomy_term'
  handler_settings:
    target_bundles:
      tags: tags
    sort:
      field: _none
    auto_create: false

これは記事内のタグの設定なので、タグをボキャブラリと交換する必要があります。

2
4k4