function QueryArgsCacheContext::getContext

Same name and namespace in other branches
  1. 8.9.x core/lib/Drupal/Core/Cache/Context/QueryArgsCacheContext.php \Drupal\Core\Cache\Context\QueryArgsCacheContext::getContext()
  2. 10 core/lib/Drupal/Core/Cache/Context/QueryArgsCacheContext.php \Drupal\Core\Cache\Context\QueryArgsCacheContext::getContext()
  3. 11.x 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.

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
            ->get($query_arg);
        if (is_array($value)) {
            return http_build_query($value);
        }
        elseif ($value !== '') {
            return $value;
        }
        return '?valueless?';
    }
    return '';
}

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