You are here

public function PanelizerPanelsIPEController::revertToDefault in Panelizer 8.3

Same name and namespace in other branches
  1. 8.5 src/Controller/PanelizerPanelsIPEController.php \Drupal\panelizer\Controller\PanelizerPanelsIPEController::revertToDefault()
  2. 8.4 src/Controller/PanelizerPanelsIPEController.php \Drupal\panelizer\Controller\PanelizerPanelsIPEController::revertToDefault()

Reverts an entity view mode to a particular named default.

Parameters

\Drupal\Core\Entity\FieldableEntityInterface $entity: The entity.

string $view_mode: The view mode.

Return value

\Symfony\Component\HttpFoundation\Response An empty response.

Throws

\Symfony\Component\HttpKernel\Exception\BadRequestHttpException

1 string reference to 'PanelizerPanelsIPEController::revertToDefault'
panelizer.routing.yml in ./panelizer.routing.yml
panelizer.routing.yml

File

src/Controller/PanelizerPanelsIPEController.php, line 61

Class

PanelizerPanelsIPEController
Controller for Panelizer's Panels IPE routes.

Namespace

Drupal\panelizer\Controller

Code

public function revertToDefault(FieldableEntityInterface $entity, $view_mode) {

  // Get the bundle specific default display as a fallback.
  $settings = $this->panelizer
    ->getPanelizerSettings($entity
    ->getEntityTypeId(), $entity
    ->bundle(), $view_mode);
  $default = $settings['default'];

  // Check the entity for a documented default to which we should revert.
  if ($entity
    ->hasField('panelizer') && $entity->panelizer
    ->first()) {
    foreach ($entity->panelizer as $item) {
      if ($item->view_mode == $view_mode && !empty($item->default)) {
        $default = $item->default;
        break;
      }
    }
  }

  // If we somehow ended up not having a default, throw an exception.
  if (empty($default)) {
    throw new BadRequestHttpException("Default name to revert to must be passed!");
  }
  $this->panelizer
    ->setPanelsDisplay($entity, $view_mode, $default);
  return new Response();
}