1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- <?php
- namespace Drupal\Core\Cache\Context;
- use Drupal\Core\Cache\CacheableMetadata;
- use Symfony\Component\DependencyInjection\ContainerAwareInterface;
- use Symfony\Component\DependencyInjection\ContainerAwareTrait;
- /**
- * Defines the MenuActiveTrailsCacheContext service.
- *
- * This class is container-aware to avoid initializing the 'menu.active_trails'
- * service (and its dependencies) when it is not necessary.
- */
- class MenuActiveTrailsCacheContext implements CalculatedCacheContextInterface, ContainerAwareInterface {
- use ContainerAwareTrait;
- /**
- * {@inheritdoc}
- */
- public static function getLabel() {
- return t("Active menu trail");
- }
- /**
- * {@inheritdoc}
- */
- public function getContext($menu_name = NULL) {
- if (!$menu_name) {
- throw new \LogicException('No menu name provided for menu.active_trails cache context.');
- }
- $active_trail = $this->container->get('menu.active_trail')
- ->getActiveTrailIds($menu_name);
- return 'menu_trail.' . $menu_name . '|' . implode('|', $active_trail);
- }
- /**
- * {@inheritdoc}
- */
- public function getCacheableMetadata($menu_name = NULL) {
- if (!$menu_name) {
- throw new \LogicException('No menu name provided for menu.active_trails cache context.');
- }
- $cacheable_metadata = new CacheableMetadata();
- return $cacheable_metadata->setCacheTags(["config:system.menu.$menu_name"]);
- }
- }
|