class HtmxLocationResponseData
Optional data object for HX-Location.
Hierarchy
- class \Drupal\Core\Htmx\HtmxLocationResponseData implements \Drupal\Core\Htmx\Stringable
Expanded class hierarchy of HtmxLocationResponseData
1 file declares its use of HtmxLocationResponseData
- HtmxHeadersTest.php in core/
tests/ Drupal/ Tests/ Core/ Htmx/ HtmxHeadersTest.php
File
-
core/
lib/ Drupal/ Core/ Htmx/ HtmxLocationResponseData.php, line 11
Namespace
Drupal\Core\HtmxView source
class HtmxLocationResponseData implements \Stringable {
/**
* Collects cache data for the URL.
*/
protected CacheableMetadata $cacheableMetadata;
/**
* Data for HX-Location headers.
*
* @param \Drupal\Core\Url $path
* The path for the GET request.
* @param string $source
* The source element of the request.
* @param string $event
* An event that “triggered” the request.
* @param string $handler
* A callback that will handle the response HTML.
* @param string $target
* The target for the swap.
* @param string $swap
* The swap strategy.
* @param array<string, string> $values
* A set of values to submit with the request.
* @param array<string, string> $headers
* Headers to submit with the request.
* @param string $select
* A selector for the content to swap into the target.
*
* @see https://htmx.org/headers/hx-location/
*/
public function __construct(public readonly Url $path, public readonly string $source = '', public readonly string $event = '', public readonly string $handler = '', public readonly string $target = '', public readonly string $swap = '', public readonly array $values = [], public readonly array $headers = [], public readonly string $select = '') {
$this->cacheableMetadata = new CacheableMetadata();
}
/**
* Returns non-empty data, JSON encoded.
*
* @return string
* The encoded data.
*/
public function __toString() : string {
/** @var \Drupal\Core\GeneratedUrl $generatedUrl */
$generatedUrl = $this->path
->toString(TRUE);
$this->cacheableMetadata
->addCacheableDependency($generatedUrl);
$path = $generatedUrl->getGeneratedUrl();
$data = [
'path' => $path,
'source' => $this->source,
'event' => $this->event,
'headers' => $this->headers,
'handler' => $this->handler,
'target' => $this->target,
'swap' => $this->swap,
'select' => $this->select,
'values' => $this->values,
];
$data = array_filter($data, static fn($item) => $item !== '' && $item !== []);
return json_encode($data);
}
/**
* Retrieves the cacheable metadata associated with the URL.
*
* @return \Drupal\Core\Cache\CacheableMetadata
* The cacheable metadata instance.
*/
public function getCacheableMetadata() : CacheableMetadata {
return $this->cacheableMetadata;
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.