function system_entity_form_display_presave
Implements hook_ENTITY_TYPE_presave() for entity_form_display entities.
Provides a BC layer for modules providing old configurations.
@todo Remove this hook in Drupal 9.0.x https://www.drupal.org/project/drupal/issues/3086388
File
-
core/
modules/ system/ system.module, line 1434
Code
function system_entity_form_display_presave(EntityFormDisplayInterface $display) {
/** @var \Drupal\Core\Field\WidgetPluginManager $field_widget_manager */
$field_widget_manager = \Drupal::service('plugin.manager.field.widget');
foreach ($display->getComponents() as $field_name => $component) {
if (empty($component['type'])) {
continue;
}
$plugin_definition = $field_widget_manager->getDefinition($component['type'], FALSE);
if (!is_a($plugin_definition['class'], EntityReferenceAutocompleteWidget::class, TRUE)) {
continue;
}
if (!isset($component['settings']['match_limit'])) {
@trigger_error(sprintf('Any entity_reference_autocomplete component of an entity_form_display must have a match_limit setting. The %s field on the %s form display is missing it. This BC layer will be removed before 9.0.0. See https://www.drupal.org/node/2863188', $field_name, $display->id()), E_USER_DEPRECATED);
$component['settings']['match_limit'] = 10;
$display->setComponent($field_name, $component);
}
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.