I need to get a list of all entity types.

EntityManager is deprecated. In Drupal 9 EntityTypeRepository should be used, though I don't see any reference to its being used.

How would I use this class in a non-static way to obtain a list of all entity types?

  • 1
    See EntityTypeRepositoryInterface::getEntityTypeLabels. Statically you can use \Drupal::service('entity_type.repository')->getEntityTypeLabels(). Non-statically is standard DI, which depends on the type of class you want to use it in.
    – 4uk4
    May 8, 2020 at 7:10
  • Googling drupal EntityManager is deprecated gives you a page full of samples how to accomplish this. Please always do some research first, try out what you find and if somethings left unclear provide a reproducible and detailed question of what went wrong. Many thanks
    – leymannx
    May 8, 2020 at 10:17
  • Yup. Did research, and look through code. EntityTypeManager does the job when you have an entity in mind... not so much when you want all entity types, which is where my research yielded the class I asked about.
    – JAyenGreen
    May 8, 2020 at 11:41

1 Answer 1


As the EntityManager docs say:

Deprecated in Drupal 8.0.0 and will be removed before Drupal 9.0.0. Use \Drupal::entityTypeManager() instead in most cases. If the needed method is not on \Drupal\Core\Entity\EntityTypeManagerInterface, see the deprecated \Drupal\Core\Entity\EntityManager to find the correct interface or service.

$entity_type_manager = \Drupal::service('entity_type.manager');
$entity_definitions = $entity_type_manager->getDefinitions();
// Create a list of entity types.
$entity_types_list = [];
foreach($entity_definitions as $entity_name => $entity_definition) {
  $entity_types_list[$entity_name] = (string) $entity_definition->getLabel();
  • I asked about the other class because EntityTypeManager seems not have a GetDefinitions (plural) method, which is how I eventually found the EnitityTypeRepository class mentioned.
    – JAyenGreen
    May 8, 2020 at 11:46
  • It does have the getDefinitions() plutal method, so you're wrong about that.
    – No Sssweat
    May 8, 2020 at 23:23
  • 1
    You’re absolutely right. I forgot that there was an interim step where I read that I should instead be using the method getEntityTypeLabels instead, and it was it, not getDefinitions, that forced me to the other class.
    – JAyenGreen
    May 8, 2020 at 23:32

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.