function entity_hierarchy_entity_type_build in Entity Reference Hierarchy 3.x
Same name and namespace in other branches
- 8.2 entity_hierarchy.module \entity_hierarchy_entity_type_build()
- 8 entity_hierarchy.module \entity_hierarchy_entity_type_build()
Implements
See also
\Drupal\entity_hierarchy\Form\HierarchyChildrenForm
File
- ./
entity_hierarchy.module, line 38 - A module to make entities hierarchical.
Code
function entity_hierarchy_entity_type_build(array &$entity_types) {
/** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */
// Adds the entity_hierarchy_reorder link template.
foreach ($entity_types as $entity_type_id => $entity_type) {
if (!$entity_type instanceof ContentEntityType || !$entity_type
->hasLinkTemplate('canonical')) {
continue;
}
$providers = $entity_type
->getRouteProviderClasses() ?: [];
if (empty($providers['entity_hierarchy'])) {
$providers['entity_hierarchy'] = EntityHierarchyRouteProvider::class;
$entity_types[$entity_type_id]
->setHandlerClass('route_provider', $providers);
}
// We have to add this for every content entity-type, regardless of if it
// has hierarchy fields or not, because you cannot use the field manager
// during a hook_entity_type_build, as it will cause recursion.
$entity_types[$entity_type_id]
->setFormClass('entity_hierarchy_reorder', HierarchyChildrenForm::class)
->setHandlerClass('entity_hierarchy', EntityHierarchyHandler::class)
->setLinkTemplate('entity_hierarchy_reorder', $entity_type
->getLinkTemplate('canonical') . '/children');
}
if (isset($entity_types['node'])) {
$entity_types['node']
->setHandlerClass('entity_hierarchy', NodeEntityHierarchyHandler::class);
}
}