Drupal 8 - Entité - Champ de base « Référence à un terme de taxonomie »
Pour faire un champ de base référence à un terme de taxonomie, on va utiliser le type "entity_reference", en lui passant évidement le nom du vocabulaire, (ici "option_types") :
$fields['type'] = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Catégorie')) ->setSetting('target_type', 'taxonomy_term') ->setSetting('handler', 'default:taxonomy_term') ->setSetting('handler_settings', [ // ici définir l'id du vocabulaire 'target_bundles' => [ 'option_types' => 'option_types'] ]) //on utilisera l'affichage en mode "radio / checkbox" en fonction de la cardinalité ->setDisplayOptions('form', array( 'type' => 'options_buttons', 'weight' => 3, )) ->setDisplayConfigurable('form', TRUE) ->setDisplayConfigurable('view', TRUE);
Pour utiliser le formulaire type "tag" :
$fields['type'] = BaseFieldDefinition::create('entity_reference') ->setLabel(t('Catégorie')) ->setSetting('target_type', 'taxonomy_term') ->setSetting('handler', 'default:taxonomy_term') ->setSetting('handler_settings', [ 'target_bundles' => [ 'option_types' => 'option_types'] ]) ->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);
Note, pour avoir une cardinalité illimitée (autant de valeurs possibles que l'utilisateur le désir) ajouter l'appel suivant à la déclaration de votre propriétée :
->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)