Comment obtenir des champs personnalisés affectés à la taxonomie dans Drupal 8. Ce que j'ai fait jusqu'à présent, c'est:
$contact_countries = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")->loadTree('contact_country');
$ contact_countries contient maintenant des taxonomies, je peux obtenir le nom de la taxonomie et l'ID, mais j'ai également créé un champ personnalisé dans la taxonomie, comment puis-je l'obtenir?
Avec ce code
foreach($contact_countries as $contact_countrie) {
$terms[] = \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid);
$variables['contact_countries'] = $terms;
}
Je reçois un objet (Drupal\taxonomy\Entity\Term) avec des valeurs protégées. Je peux y voir les valeurs de mes champs personnalisés, mais je ne peux pas y accéder.
Vous pouvez accéder aux champs à l'aide de getFields () sur le terme objet: https://api.drupal.org/api/drupal/core!modules!taxonomy!src!Entity!Term.php/class/Term/8.2 .x
Ou vous pouvez utiliser get (): https://api.drupal.org/api/drupal/core%21lib%21Drupal%21Core%21Entity%21ContentEntityBase.php/function/ContentEntityBase%3A%3Aget/8.2. x
Je l'ai fait comme ça:
$contact_countries = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")->loadTree('contact_country');
$terms = array();
foreach($contact_countries as $contact_countrie) {
$terms[] = array(
'contact_country' => $contact_countrie->name,
'contact_phone' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_phone')->getValue()[0]['value'],
'contact_flag' => \Drupal::entityTypeManager()->getStorage('taxonomy_term')->load($contact_countrie->tid)->get('field_category_flag')->entity->uri->value,
);
}
Ici, j'ai les champs field_phone (champ de texte) et field_category_flag (champ de fichier).
Je l'ai fait de cette façon.
$countries = \Drupal::service('entity_type.manager')->getStorage("taxonomy_term")->loadTree('countries',0,NULL,TRUE);
/* Using First Country : $countries[0] */
$region = $countries[0]->get('field_region')->target_id;
$description = $countries[0]->get('field_description')->value;