Drupal 8 - Entité - Champ de base « Référence à un terme de taxonomie »

Posté le Vendredi 28 juillet 2017 - 12:01
Dernière mise à jour le Lundi 26 février 2018 - 13:16

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") :

  1. $fields['type'] = BaseFieldDefinition::create('entity_reference')
  2. ->setLabel(t('Catégorie'))
  3. ->setSetting('target_type', 'taxonomy_term')
  4. ->setSetting('handler', 'default:taxonomy_term')
  5. ->setSetting('handler_settings', [
  6. // ici définir l'id du vocabulaire
  7. 'target_bundles' => [ 'option_types' => 'option_types']
  8. ])
  9. //on utilisera l'affichage en mode "radio / checkbox" en fonction de la cardinalité
  10. ->setDisplayOptions('form', array(
  11. 'type' => 'options_buttons',
  12. 'weight' => 3,
  13. ))
  14. ->setDisplayConfigurable('form', TRUE)
  15. ->setDisplayConfigurable('view', TRUE);

Pour utiliser le formulaire type "tag" :

  1. $fields['type'] = BaseFieldDefinition::create('entity_reference')
  2. ->setLabel(t('Catégorie'))
  3. ->setSetting('target_type', 'taxonomy_term')
  4. ->setSetting('handler', 'default:taxonomy_term')
  5. ->setSetting('handler_settings', [
  6. 'target_bundles' => [ 'option_types' => 'option_types']
  7. ])
  8. ->setDisplayOptions('form', array(
  9. 'type' => 'entity_reference_autocomplete',
  10. 'weight' => 3,
  11. 'settings' => array(
  12. 'match_operator' => 'CONTAINS',
  13. 'size' => '10',
  14. 'autocomplete_type' => 'tags',
  15. 'placeholder' => '',
  16. ),
  17. ))
  18. ->setDisplayConfigurable('form', TRUE)
  19. ->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é :

  1. ->setCardinality(FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED)

 

 

 

Ajouter un commentaire

Ne sera pas publié

HTML restreint

  • Balises HTML autorisées : <a href hreflang> <em> <strong> <cite> <blockquote cite> <code> <ul type> <ol start type> <li> <dl> <dt> <dd> <h2 id> <h3 id> <h4 id> <h5 id> <h6 id>
  • Les lignes et les paragraphes vont à la ligne automatiquement.
  • Les adresses de pages web et les adresses courriel se transforment en liens automatiquement.
CAPTCHA
Désolé, pour ça, mais c'est le seul moyen pour éviter le spam...