protected TypedConfigManager::getDefinitionWithReplacements($base_plugin_id, array $replacements, $exception_on_invalid = TRUE)
Gets a schema definition with replacements for dynamic names.
Parameters
string $base_plugin_id: A plugin ID.
array $replacements: An array of replacements for dynamic type names.
bool $exception_on_invalid: (optional) This parameter is passed along to self::getDefinition(). However, self::getDefinition() does not respect this parameter, so it is effectively useless in this context.
Return value
array A schema definition array.
File
- core/lib/Drupal/Core/Config/TypedConfigManager.php, line 155
Class
- TypedConfigManager
- Manages config schema type plugins.
Namespace
Drupal\Core\Config
Code
protected function getDefinitionWithReplacements($base_plugin_id, array $replacements, $exception_on_invalid = TRUE) {
$definitions = $this->getDefinitions();
$type = $this->determineType($base_plugin_id, $definitions);
$definition = $definitions[$type];
// Check whether this type is an extension of another one and compile it.
if (isset($definition['type'])) {
$merge = $this->getDefinition($definition['type'], $exception_on_invalid);
// Preserve integer keys on merge, so sequence item types can override
// parent settings as opposed to adding unused second, third, etc. items.
$definition = NestedArray::mergeDeepArray(array($merge, $definition), TRUE);
// Replace dynamic portions of the definition type.
if (!empty($replacements) && strpos($definition['type'], ']')) {
$sub_type = $this->determineType($this->replaceName($definition['type'], $replacements), $definitions);
// Merge the newly determined subtype definition with the original
// definition.
$definition = NestedArray::mergeDeepArray([$definitions[$sub_type], $definition], TRUE);
$type = "$type||$sub_type";
}
// Unset type so we try the merge only once per type.
unset($definition['type']);
$this->definitions[$type] = $definition;
}
// Add type and default definition class.
$definition += array(
'definition_class' => '\Drupal\Core\TypedData\DataDefinition',
'type' => $type,
);
return $definition;
}
Please login to continue.