Obtenir le libellé d'une valeur de champ liste dans Drupal

Rédigé par Teddy Vermeulin le 25/05/2024

Astuces pour récupérer facilement et de manière programmatique le libellé d'une valeur de champ liste dans Drupal en PHP et Twig.

Les champs liste

Afficher le libellé

Dans le développement sous Drupal, il est souvent nécessaire de manipuler et d'afficher des valeurs provenant de champs de type liste. En base de données, Drupal ne stocke que la clé correspondante, rendant l'accès aux libellés moins direct. Découvrez comment accéder rapidement et facilement aux libellés de vos champs liste.

 

La méthode en PHP

Cas 1 : Obtenir le libellé depuis une entité

Dans ce cas, vous disposez d'un objet entité et vous souhaitez obtenir le libellé de la valeur du champ :

// Première étape, nous récupérons la définition de stockage du champ $field_definition = $entity->get('field_list')->getFieldDefinition()->getFieldStorageDefinition(); // Ensuite nous récupérons un tableau des options disponibles sous la forme clé => valeur $field_allowed_options = options_allowed_values($field_definition, $entity); // Nous pouvons dès à présent récupérer notre libellé $label = $field_allowed_options[$entity->get('field_list')->value];

Cas 2 : Obtenir le libellé depuis un type d'entité

Dans ce cas, vous ne disposez pas d'un objet entité mais vous souhaitez obtenir une liste de toutes les options autorisées du champ de l'entité :

// Première étape, nous récupérons les définition de stockage des champs de l'entité $entity_fields_definitions = Drupal::service('entity_field.manager')->getFieldStorageDefinitions('entity_type'); // Ensuite nous récupérons la définition de stockage du champ $field_definition = $entity_fields_definitions['field_list']; // Enfin nous récupérons un tableau des options disponibles sous la forme clé => valeur $field_allowed_options = options_allowed_values($field_definition, $entity);

La méthode en TWIG

En twig, nous allons récupérer le libellé directement depuis l'entité, comme dans le cas 1 de la méthode en PHP : 

{# Première étape, nous récupérons les options disponibles dans un tableau #} {% set field_allowed_options = node.field_list.getSetting('allowed_values') %} {# Ensuite nous stockons la valeur du champ #} {% set value = node.field_list.value %} {# Nous affichons le libellé #} {{ field_allowed_options[value] }}