public function TypedConfigManager::buildDataDefinition in Drupal 9
Same name and namespace in other branches
- 8 core/lib/Drupal/Core/Config/TypedConfigManager.php \Drupal\Core\Config\TypedConfigManager::buildDataDefinition()
Creates a new data definition object from a type definition array and actual configuration data. Since type definitions may contain variables to be replaced, we need the configuration value to create it.
Parameters
array $definition: The base type definition array, for which a data definition should be created.
$value: Optional value of the configuration element.
string $name: Optional name of the configuration element.
object $parent: Optional parent element.
Return value
\Drupal\Core\TypedData\DataDefinitionInterface A data definition for the given data type.
Overrides TypedConfigManagerInterface::buildDataDefinition
1 call to TypedConfigManager::buildDataDefinition()
- TypedConfigManager::createFromNameAndData in core/
lib/ Drupal/ Core/ Config/ TypedConfigManager.php - Gets typed data for a given configuration name and its values.
File
- core/
lib/ Drupal/ Core/ Config/ TypedConfigManager.php, line 84
Class
- TypedConfigManager
- Manages config schema type plugins.
Namespace
Drupal\Core\ConfigCode
public function buildDataDefinition(array $definition, $value, $name = NULL, $parent = NULL) {
// Add default values for data type and replace variables.
$definition += [
'type' => 'undefined',
];
$replace = [];
$type = $definition['type'];
if (strpos($type, ']')) {
// Replace variable names in definition.
$replace = is_array($value) ? $value : [];
if (isset($parent)) {
$replace['%parent'] = $parent;
}
if (isset($name)) {
$replace['%key'] = $name;
}
$type = $this
->replaceName($type, $replace);
// Remove the type from the definition so that it is replaced with the
// concrete type from schema definitions.
unset($definition['type']);
}
// Add default values from type definition.
$definition += $this
->getDefinitionWithReplacements($type, $replace);
$data_definition = $this
->createDataDefinition($definition['type']);
// Pass remaining values from definition array to data definition.
foreach ($definition as $key => $value) {
if (!isset($data_definition[$key])) {
$data_definition[$key] = $value;
}
}
return $data_definition;
}