public function DsController::contextualTab in Display Suite 8.4
Same name and namespace in other branches
- 8.2 src/Controller/DsController.php \Drupal\ds\Controller\DsController::contextualTab()
- 8.3 src/Controller/DsController.php \Drupal\ds\Controller\DsController::contextualTab()
Adds a contextual tab to entities.
Parameters
\Drupal\Core\Routing\RouteMatchInterface $route_match: The route information.
Return value
\Symfony\Component\HttpFoundation\RedirectResponse A redirect response pointing to the corresponding display.
File
- src/
Controller/ DsController.php, line 154
Class
- DsController
- Returns responses for Display Suite UI routes.
Namespace
Drupal\ds\ControllerCode
public function contextualTab(RouteMatchInterface $route_match) {
$parameter_name = $route_match
->getRouteObject()
->getOption('_ds_entity_type_id');
$entity = $route_match
->getParameter($parameter_name);
$entity_type_id = $entity
->getEntityTypeId();
$destination = $entity
->toUrl();
if (!empty($entity->ds_switch->value)) {
$view_mode = $entity->ds_switch->value;
}
else {
$view_mode = 'full';
}
// Get the manage display URI.
$route = FieldUI::getOverviewRouteInfo($entity_type_id, $entity
->bundle());
/* @var $entity_display \Drupal\Core\Entity\Display\EntityDisplayInterface */
$entity_display = EntityViewDisplay::load($entity_type_id . '.' . $entity
->bundle() . '.' . $view_mode);
$route_parameters = $route
->getRouteParameters();
if ($entity_display && $entity_display
->status() && $entity_display
->getThirdPartySetting('ds', 'layout')) {
$route_parameters['view_mode_name'] = $view_mode;
$admin_route_name = "entity.entity_view_display.{$entity_type_id}.view_mode";
}
else {
$admin_route_name = "entity.entity_view_display.{$entity_type_id}.default";
}
$route
->setOption('query', [
'destination' => $destination
->toString(),
]);
$url = new Url($admin_route_name, $route_parameters, $route
->getOptions());
return new RedirectResponse($url
->setAbsolute(TRUE)
->toString());
}