function LocalTaskManager::getLocalTasks

Same name in other branches
  1. 9 core/lib/Drupal/Core/Menu/LocalTaskManager.php \Drupal\Core\Menu\LocalTaskManager::getLocalTasks()
  2. 10 core/lib/Drupal/Core/Menu/LocalTaskManager.php \Drupal\Core\Menu\LocalTaskManager::getLocalTasks()
  3. 11.x core/lib/Drupal/Core/Menu/LocalTaskManager.php \Drupal\Core\Menu\LocalTaskManager::getLocalTasks()

Overrides LocalTaskManagerInterface::getLocalTasks

File

core/lib/Drupal/Core/Menu/LocalTaskManager.php, line 365

Class

LocalTaskManager
Provides the default local task manager using YML as primary definition.

Namespace

Drupal\Core\Menu

Code

public function getLocalTasks($route_name, $level = 0) {
    if (!isset($this->taskData[$route_name])) {
        $cacheability = new CacheableMetadata();
        $cacheability->addCacheContexts([
            'route',
        ]);
        // Look for route-based tabs.
        $this->taskData[$route_name] = [
            'tabs' => [],
            'cacheability' => $cacheability,
        ];
        if (!$this->requestStack
            ->getCurrentRequest()->attributes
            ->has('exception')) {
            // Safe to build tasks only when no exceptions raised.
            $data = [];
            $local_tasks = $this->getTasksBuild($route_name, $cacheability);
            foreach ($local_tasks as $tab_level => $items) {
                $data[$tab_level] = empty($data[$tab_level]) ? $items : array_merge($data[$tab_level], $items);
            }
            $this->taskData[$route_name]['tabs'] = $data;
            // Allow modules to alter local tasks.
            $this->moduleHandler
                ->alter('menu_local_tasks', $this->taskData[$route_name], $route_name, $cacheability);
            $this->taskData[$route_name]['cacheability'] = $cacheability;
        }
    }
    if (isset($this->taskData[$route_name]['tabs'][$level])) {
        return [
            'tabs' => $this->taskData[$route_name]['tabs'][$level],
            'route_name' => $route_name,
            'cacheability' => $this->taskData[$route_name]['cacheability'],
        ];
    }
    return [
        'tabs' => [],
        'route_name' => $route_name,
        'cacheability' => $this->taskData[$route_name]['cacheability'],
    ];
}

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.