class ContextActiveTrail in Context Active Trail 8
Same name and namespace in other branches
- 8.2 src/ContextActiveTrail.php \Drupal\context_active_trail\ContextActiveTrail
Allow the active trail to be set manually.
Hierarchy
- class \Drupal\Core\Cache\CacheCollector implements CacheCollectorInterface, DestructableInterface
- class \Drupal\Core\Menu\MenuActiveTrail implements MenuActiveTrailInterface
- class \Drupal\context_active_trail\ContextActiveTrail
- class \Drupal\Core\Menu\MenuActiveTrail implements MenuActiveTrailInterface
Expanded class hierarchy of ContextActiveTrail
File
- src/
ContextActiveTrail.php, line 16
Namespace
Drupal\context_active_trailView source
class ContextActiveTrail extends MenuActiveTrail {
/**
* The context manager.
*
* @var \Drupal\Context\ContextManager
*/
protected $contextManager;
/**
* Constructor.
*
* @param \Drupal\Core\Menu\MenuLinkManagerInterface $menu_link_manager
* The menu link plugin manager.
* @param \Drupal\Core\Routing\RouteMatchInterface $route_match
* A route match object for finding the active link.
* @param \Drupal\Core\Cache\CacheBackendInterface $cache
* The cache backend.
* @param \Drupal\Core\Lock\LockBackendInterface $lock
* The lock backend.
* @param \Drupal\Context\ContextManager $context_manager
* The context manager.
*/
public function __construct(MenuLinkManagerInterface $menu_link_manager, RouteMatchInterface $route_match, CacheBackendInterface $cache, LockBackendInterface $lock, ContextManager $context_manager) {
parent::__construct($menu_link_manager, $route_match, $cache, $lock);
$this->contextManager = $context_manager;
$this->tags[] = 'context_active_trail';
}
/**
* {@inheritdoc}
*/
public function getActiveLink($menu_name = NULL) {
// Try to get the value from context.
foreach ($this->contextManager
->getActiveReactions('active_trail') as $reaction) {
if ($link_id = $reaction
->getLinkId()) {
try {
$instance = $this->menuLinkManager
->getInstance([
'id' => $link_id,
]);
} catch (PluginNotFoundException $e) {
\Drupal::logger('context_active_trail')
->error('Could not find the configured menu link to set active: @error', [
'@error' => $e
->getMessage(),
]);
return FALSE;
}
// Check that the instance is in the menu.
if (!empty($menu_name) && $instance
->getMenuName() != $menu_name) {
break;
}
return $instance;
}
}
// Fall back to the default.
return parent::getActiveLink($menu_name);
}
}
Members
Name | Modifiers | Type | Description | Overrides |
---|---|---|---|---|
CacheCollector:: |
protected | property | The cache backend that should be used. | 1 |
CacheCollector:: |
protected | property | Stores the cache creation time. | |
CacheCollector:: |
protected | property | Flag that indicates of the cache has been invalidated. | |
CacheCollector:: |
protected | property | Indicates if the collected cache was already loaded. | |
CacheCollector:: |
protected | property | The cache id that is used for the cache entry. | |
CacheCollector:: |
protected | property | An array of keys to add to the cache on service termination. | |
CacheCollector:: |
protected | property | An array of keys to remove from the cache on service termination. | |
CacheCollector:: |
protected | property | The lock backend that should be used. | 1 |
CacheCollector:: |
protected | property | Storage for the data itself. | |
CacheCollector:: |
protected | property | A list of tags that are used for the cache entry. | |
CacheCollector:: |
public | function |
Clears the collected cache entry. Overrides CacheCollectorInterface:: |
1 |
CacheCollector:: |
public | function |
Deletes the element. Overrides CacheCollectorInterface:: |
|
CacheCollector:: |
public | function |
Performs destruct operations. Overrides DestructableInterface:: |
|
CacheCollector:: |
public | function |
Gets value from the cache. Overrides CacheCollectorInterface:: |
2 |
CacheCollector:: |
public | function |
Returns whether data exists for this key. Overrides CacheCollectorInterface:: |
1 |
CacheCollector:: |
protected | function | Invalidate the cache. | |
CacheCollector:: |
protected | function | Loads the cache if not already done. | 1 |
CacheCollector:: |
protected | function | Normalizes a cache ID in order to comply with database limitations. | |
CacheCollector:: |
protected | function | Flags an offset value to be written to the persistent cache. | |
CacheCollector:: |
public | function |
Resets the local cache. Overrides CacheCollectorInterface:: |
1 |
CacheCollector:: |
public | function |
Implements \Drupal\Core\Cache\CacheCollectorInterface::set(). Overrides CacheCollectorInterface:: |
1 |
CacheCollector:: |
protected | function | Writes a value to the persistent cache immediately. | 1 |
ContextActiveTrail:: |
protected | property | The context manager. | |
ContextActiveTrail:: |
public | function |
Fetches a menu link which matches the route name, parameters and menu name. Overrides MenuActiveTrail:: |
|
ContextActiveTrail:: |
public | function |
Constructor. Overrides MenuActiveTrail:: |
|
MenuActiveTrail:: |
protected | property | The menu link plugin manager. | |
MenuActiveTrail:: |
protected | property | The route match object for the current page. | |
MenuActiveTrail:: |
protected | function | Helper method for ::getActiveTrailIds(). | |
MenuActiveTrail:: |
public | function |
This implementation caches all active trail IDs per route match for *all*
menus whose active trails are calculated on that page. This ensures 1 cache
get for all active trails per page load, rather than N. Overrides MenuActiveTrailInterface:: |
|
MenuActiveTrail:: |
protected | function |
Overrides CacheCollector:: |
|
MenuActiveTrail:: |
protected | function |
Overrides CacheCollector:: |