protected function SelectionPluginBase::resolveBackwardCompatibilityConfiguration in Drupal 8
Moves the backward compatibility level configurations in the right place.
In order to keep backward compatibility, we copy all settings, except 'target_type', 'handler' and 'entity' under 'handler_settings', following the structure from the field config. If the plugin was instantiated using the 'handler_settings' level, those values will be used. In case of conflict, the root level settings will take precedence. The backward compatibility aware configuration will have the next structure:
- target_type
- handler (will be removed in Drupal 9.0.x, it's the plugin id)
- entity
- setting_1
- setting_2 ...
- setting_N
- handler_settings: (will be removed in Drupal 9.0.x)
- setting_1
- setting_2 ...
- setting_N
@internal
@todo Remove this method call and its method in Drupal 9.
Parameters
array $configuration: The configuration array to be altered.
See also
https://www.drupal.org/project/drupal/issues/3069757
https://www.drupal.org/node/2870971
1 call to SelectionPluginBase::resolveBackwardCompatibilityConfiguration()
- SelectionPluginBase::setConfiguration in core/
lib/ Drupal/ Core/ Entity/ EntityReferenceSelection/ SelectionPluginBase.php - Sets the configuration for this plugin instance.
File
- core/
lib/ Drupal/ Core/ Entity/ EntityReferenceSelection/ SelectionPluginBase.php, line 130
Class
- SelectionPluginBase
- Provides a base class for configurable selection handlers.
Namespace
Drupal\Core\Entity\EntityReferenceSelectionCode
protected function resolveBackwardCompatibilityConfiguration(array &$configuration) {
if (isset($this
->defaultConfiguration()['handler_settings'])) {
throw new \InvalidArgumentException("{$this->getPluginDefinition()['class']}::defaultConfiguration() should not contain a 'handler_settings' key. All settings should be placed in the root level.");
}
// Extract the BC level from the passed configuration, if any.
if (array_key_exists('handler_settings', $configuration)) {
if (!is_array($configuration['handler_settings'])) {
throw new \InvalidArgumentException("The setting 'handler_settings' is reserved and cannot be used.");
}
@trigger_error("Providing settings under 'handler_settings' is deprecated in drupal:8.4.0 support for 'handler_settings' is removed from drupal:9.0.0. Move the settings in the root of the configuration array. See https://www.drupal.org/node/2870971", E_USER_DEPRECATED);
// Settings passed in the root level take precedence over BC settings.
$configuration += $configuration['handler_settings'];
unset($configuration['handler_settings']);
}
}