You are here

function webform_revisions_menu_local_tasks_alter in Config Entity Revisions 8

Same name and namespace in other branches
  1. 8.2 modules/webform_revisions/webform_revisions.module \webform_revisions_menu_local_tasks_alter()
  2. 1.x modules/webform_revisions/webform_revisions.module \webform_revisions_menu_local_tasks_alter()

Implements hook_menu_local_tasks_alter().

File

modules/webform_revisions/webform_revisions.module, line 138

Code

function webform_revisions_menu_local_tasks_alter(&$data, $route_name, \Drupal\Core\Cache\RefinableCacheableDependencyInterface &$cacheability) {

  // ISSUE:
  // Devel routes do not use 'webform' parameter which throws the error below.
  // Some mandatory parameters are missing ("webform") to generate a URL for
  // route "entity.webform_submission.canonical"
  //
  // WORKAROUND:
  // Make sure webform parameter is set for all routes.
  if (strpos($route_name, 'entity.webform') === 0) {
    foreach ($data['tabs'] as $tab_level) {
      foreach ($tab_level as $tab) {

        /** @var Drupal\Core\Url $url */
        $url = $tab['#link']['url'];
        $tab_route_name = $url
          ->getRouteName();
        $tab_route_parameters = $url
          ->getRouteParameters();
        if (strpos($tab_route_name, 'entity.webform') !== FALSE && isset($tab_route_parameters['webform'])) {
          $url
            ->setRouteParameter('config_entity', $tab_route_parameters['webform']);
        }
      }
    }
  }
}