class TermRouteContext
Sets the current taxonomy term as a context on taxonomy term routes.
Hierarchy
- class \Drupal\taxonomy\ContextProvider\TermRouteContext implements \Drupal\Core\Plugin\Context\ContextProviderInterface uses \Drupal\Core\StringTranslation\StringTranslationTrait
Expanded class hierarchy of TermRouteContext
1 file declares its use of TermRouteContext
- TermContextTest.php in core/modules/ taxonomy/ tests/ src/ Kernel/ ContextProvider/ TermContextTest.php 
1 string reference to 'TermRouteContext'
- taxonomy.services.yml in core/modules/ taxonomy/ taxonomy.services.yml 
- core/modules/taxonomy/taxonomy.services.yml
1 service uses TermRouteContext
File
- 
              core/modules/ taxonomy/ src/ ContextProvider/ TermRouteContext.php, line 17 
Namespace
Drupal\taxonomy\ContextProviderView source
class TermRouteContext implements ContextProviderInterface {
  use StringTranslationTrait;
  
  /**
   * The route match object.
   *
   * @var \Drupal\Core\Routing\RouteMatchInterface
   */
  protected $routeMatch;
  
  /**
   * Constructs a new TermRouteContext.
   *
   * @param \Drupal\Core\Routing\RouteMatchInterface $route_match
   *   The route match object.
   */
  public function __construct(RouteMatchInterface $route_match) {
    $this->routeMatch = $route_match;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getRuntimeContexts(array $unqualified_context_ids) {
    $result = [];
    $context_definition = EntityContextDefinition::create('taxonomy_term')->setRequired(FALSE);
    $value = NULL;
    if ($route_object = $this->routeMatch
      ->getRouteObject()) {
      $route_parameters = $route_object->getOption('parameters');
      if (isset($route_parameters['taxonomy_term']) && $term = $this->routeMatch
        ->getParameter('taxonomy_term')) {
        $value = $term;
      }
      elseif ($this->routeMatch
        ->getRouteName() == 'entity.taxonomy_term.add_form') {
        $vocabulary = $this->routeMatch
          ->getParameter('taxonomy_vocabulary');
        $value = Term::create([
          'vid' => $vocabulary->id(),
        ]);
      }
    }
    $cacheability = new CacheableMetadata();
    $cacheability->setCacheContexts([
      'route',
    ]);
    $context = new Context($context_definition, $value);
    $context->addCacheableDependency($cacheability);
    $result['taxonomy_term'] = $context;
    return $result;
  }
  
  /**
   * {@inheritdoc}
   */
  public function getAvailableContexts() {
    $context = EntityContext::fromEntityTypeId('taxonomy_term', $this->t('Term from URL'));
    return [
      'taxonomy_term' => $context,
    ];
  }
}Members
| Title Sort descending | Modifiers | Object type | Summary | Overriden Title | Overrides | 
|---|---|---|---|---|---|
| StringTranslationTrait::$stringTranslation | protected | property | The string translation service. | 3 | |
| StringTranslationTrait::formatPlural | protected | function | Formats a string containing a count of items. | ||
| StringTranslationTrait::getNumberOfPlurals | protected | function | Returns the number of plurals supported by a given language. | ||
| StringTranslationTrait::getStringTranslation | protected | function | Gets the string translation service. | ||
| StringTranslationTrait::setStringTranslation | public | function | Sets the string translation service to use. | 2 | |
| StringTranslationTrait::t | protected | function | Translates a string to the current language or to a given language. | ||
| TermRouteContext::$routeMatch | protected | property | The route match object. | ||
| TermRouteContext::getAvailableContexts | public | function | Gets all available contexts for the purposes of configuration. | Overrides ContextProviderInterface::getAvailableContexts | |
| TermRouteContext::getRuntimeContexts | public | function | Gets runtime context values for the given context IDs. | Overrides ContextProviderInterface::getRuntimeContexts | |
| TermRouteContext::__construct | public | function | Constructs a new TermRouteContext. | 
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.
