protected function LibraryDiscoveryParser::setOverrideValue in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Asset/LibraryDiscoveryParser.php \Drupal\Core\Asset\LibraryDiscoveryParser::setOverrideValue()
Overrides the specified library asset.
Parameters
array $library: The containing library definition.
array $sub_key: An array containing the sub-keys specifying the library asset, e.g. ['js'] or ['css', 'component'].
array $overrides: Specifies the overrides, this is an array where the key is the asset to be overridden while the value is overriding asset.
string $theme_path: The theme or base theme.
1 call to LibraryDiscoveryParser::setOverrideValue()
- LibraryDiscoveryParser::applyLibrariesOverride in core/
lib/ Drupal/ Core/ Asset/ LibraryDiscoveryParser.php - Apply libraries overrides specified for the current active theme.
File
- core/
lib/ Drupal/ Core/ Asset/ LibraryDiscoveryParser.php, line 483
Class
- LibraryDiscoveryParser
- Parses library files to get extension data.
Namespace
Drupal\Core\AssetCode
protected function setOverrideValue(array &$library, array $sub_key, array $overrides, $theme_path) {
foreach ($overrides as $original => $replacement) {
// Get the attributes of the asset to be overridden. If the key does
// not exist, then throw an exception.
$key_exists = NULL;
$parents = array_merge($sub_key, [
$original,
]);
// Save the attributes of the library asset to be overridden.
$attributes = NestedArray::getValue($library, $parents, $key_exists);
if ($key_exists) {
// Remove asset to be overridden.
NestedArray::unsetValue($library, $parents);
// No need to replace if FALSE is specified, since that is a removal.
if ($replacement) {
// Ensure the replacement path is relative to drupal root.
$replacement = $this
->resolveThemeAssetPath($theme_path, $replacement);
$new_parents = array_merge($sub_key, [
$replacement,
]);
// Replace with an override if specified.
NestedArray::setValue($library, $new_parents, $attributes);
}
}
}
}