public function DefaultController::preview in View Modes Display 8
Preview entity view modes.
Return value
string Preview content of entity view modes.
3 calls to DefaultController::preview()
- DefaultController::previewBlockContent in src/
Controller/ DefaultController.php - Returns content of the block.
- DefaultController::previewNode in src/
Controller/ DefaultController.php - Returns content of the node.
- DefaultController::previewUser in src/
Controller/ DefaultController.php - Returns user.
File
- src/
Controller/ DefaultController.php, line 63
Class
- DefaultController
- Class DefaultController.
Namespace
Drupal\view_modes_display\ControllerCode
public function preview(ContentEntityInterface $entity) {
$entity_manager = $this
->entityManager();
$entity_type = $entity
->getEntityType()
->get('id');
$view_modes_info = $entity_manager
->getViewModes($entity_type);
$config_prefix = 'core.entity_view_display';
$entity_type_id = $entity
->getEntityType()
->id();
$ids = $this
->configFactory()
->listAll($config_prefix . '.' . $entity_type_id . '.' . $entity
->bundle() . '.');
$load_ids = [];
foreach ($ids as $id) {
$config_id = str_replace($config_prefix . '.', '', $id);
list(, , $display_mode) = explode('.', $config_id);
$load_ids[] = $config_id;
}
$enabled_display_modes = [];
$displays = $entity_manager
->getStorage('entity_view_display')
->loadMultiple($load_ids);
foreach ($displays as $display) {
if ($display
->status()) {
$enabled_display_modes[] = $display
->get('mode');
}
}
if (!array_key_exists('full', $view_modes_info)) {
$view_modes_info['full'] = [
'label' => t('Default'),
];
}
if (!array_key_exists('full', $enabled_display_modes)) {
$enabled_display_modes[] = 'full';
}
$view_builder = \Drupal::entityTypeManager()
->getViewBuilder($entity
->getEntityTypeId());
// Loop through the view modes and render in-place.
$build = [];
foreach ($view_modes_info as $view_mode_name => $view_mode_info) {
if (in_array($view_mode_name, $enabled_display_modes)) {
$build[] = [
'#prefix' => '<div class="view-mode-list-item view-mode-list-item-' . $view_mode_name . '"><h1>' . $view_mode_info['label'] . '</h1>',
'#markup' => render($view_builder
->view($entity, $view_mode_name)),
'#suffix' => '</div>',
];
}
}
return $build;
}