You are here

public function QueryArgsCacheContext::getContext in Drupal 10

Same name and namespace in other branches
  1. 8 core/lib/Drupal/Core/Cache/Context/QueryArgsCacheContext.php \Drupal\Core\Cache\Context\QueryArgsCacheContext::getContext()
  2. 9 core/lib/Drupal/Core/Cache/Context/QueryArgsCacheContext.php \Drupal\Core\Cache\Context\QueryArgsCacheContext::getContext()

Returns the string representation of the cache context.

A cache context service's name is used as a token (placeholder) cache key, and is then replaced with the string returned by this method.

Parameters

string|null $parameter: The parameter, or NULL to indicate all possible parameter values.

Return value

string The string representation of the cache context. When $parameter is NULL, a value representing all possible parameters must be generated.

Throws

\LogicException Thrown if the passed in parameter is invalid.

Overrides CalculatedCacheContextInterface::getContext

File

core/lib/Drupal/Core/Cache/Context/QueryArgsCacheContext.php, line 26

Class

QueryArgsCacheContext
Defines the QueryArgsCacheContext service, for "per query args" caching.

Namespace

Drupal\Core\Cache\Context

Code

public function getContext($query_arg = NULL) {
  if ($query_arg === NULL) {

    // All arguments requested. Use normalized query string to minimize
    // variations.
    $value = $this->requestStack
      ->getCurrentRequest()
      ->getQueryString();
    return $value !== NULL ? $value : '';
  }
  elseif ($this->requestStack
    ->getCurrentRequest()->query
    ->has($query_arg)) {
    $value = $this->requestStack
      ->getCurrentRequest()->query
      ->all()[$query_arg];
    if (is_array($value)) {
      return http_build_query($value);
    }
    elseif ($value !== '') {
      return $value;
    }
    return '?valueless?';
  }
  return '';
}