You are here

function layout_builder_st_entity_type_alter in Layout Builder Symmetric Translations 8

Implements hook_entity_type_alter().

Copied from https://www.drupal.org/project/drupal/issues/2946333#comment-13129737

File

./layout_builder_st.module, line 36

Code

function layout_builder_st_entity_type_alter(array &$entity_types) {

  // Replace entity_view_display class with our own.

  /** @var \Drupal\Core\Entity\EntityTypeInterface[] $entity_types */
  $entity_types['entity_view_display']
    ->setClass(LayoutBuilderEntityViewDisplay::class);

  /** @var \Drupal\Core\Entity\EntityTypeInterface $entity_type */
  foreach ($entity_types as $entity_type) {
    if ($entity_type
      ->entityClassImplements(FieldableEntityInterface::class)) {
      $form_class = $entity_type
        ->getFormClass('layout_builder');
      if ($form_class !== CoreOverridesEntityForm::class) {
        \Drupal::messenger()
          ->addError(t('The "layout_builder" form class for @entity_type entity type is already overriden by @class. This is incompatible with the layout_builder_st module'), [
          '@entity_type' => $entity_type
            ->getLabel(),
          '@class' => $form_class,
        ]);
      }
      $entity_type
        ->setFormClass('layout_builder', OverridesEntityForm::class);
    }
  }
  if (isset($entity_types['block_content'])) {
    $entity_types['block_content']
      ->setFormClass('layout_builder_translate', BlockContentInlineBlockTranslateForm::class);
  }
}