function EntityDisplayFormBase::submitForm
Same name in other branches
- 9 core/modules/field_ui/src/Form/EntityDisplayFormBase.php \Drupal\field_ui\Form\EntityDisplayFormBase::submitForm()
- 8.9.x core/modules/field_ui/src/Form/EntityDisplayFormBase.php \Drupal\field_ui\Form\EntityDisplayFormBase::submitForm()
- 11.x core/modules/field_ui/src/Form/EntityDisplayFormBase.php \Drupal\field_ui\Form\EntityDisplayFormBase::submitForm()
Overrides EntityForm::submitForm
File
-
core/
modules/ field_ui/ src/ Form/ EntityDisplayFormBase.php, line 549
Class
- EntityDisplayFormBase
- Base class for EntityDisplay edit forms.
Namespace
Drupal\field_ui\FormCode
public function submitForm(array &$form, FormStateInterface $form_state) {
// If the main "Save" button was submitted while a field settings subform
// was being edited, update the new incoming settings when rebuilding the
// entity, just as if the subform's "Update" button had been submitted.
if ($edit_field = $form_state->get('plugin_settings_edit')) {
$form_state->set('plugin_settings_update', $edit_field);
}
parent::submitForm($form, $form_state);
$form_values = $form_state->getValues();
// Handle the 'display modes' checkboxes if present.
if ($this->entity
->getMode() == 'default' && !empty($form_values['display_modes_custom'])) {
$display_modes = $this->getDisplayModes();
$current_statuses = $this->getDisplayStatuses();
$statuses = [];
foreach ($form_values['display_modes_custom'] as $mode => $value) {
if (!empty($value) && empty($current_statuses[$mode])) {
// If no display exists for the newly enabled view mode, initialize
// it with those from the 'default' view mode, which were used so
// far.
if (!$this->entityTypeManager
->getStorage($this->entity
->getEntityTypeId())
->load($this->entity
->getTargetEntityTypeId() . '.' . $this->entity
->getTargetBundle() . '.' . $mode)) {
$display = $this->getEntityDisplay($this->entity
->getTargetEntityTypeId(), $this->entity
->getTargetBundle(), 'default')
->createCopy($mode);
$display->save();
}
$display_mode_label = $display_modes[$mode]['label'];
$url = $this->getOverviewUrl($mode);
$this->messenger()
->addStatus($this->t('The %display_mode mode now uses custom display settings. You might want to <a href=":url">configure them</a>.', [
'%display_mode' => $display_mode_label,
':url' => $url->toString(),
]));
}
$statuses[$mode] = !empty($value);
}
$this->saveDisplayStatuses($statuses);
}
// The saved message may not be needed in some cases. An example of
// this is in LayoutBuilderEntityViewDisplayForm which can redirect
// the user to a confirmation form before the settings are saved.
if (!$form_state->getRedirect()) {
$this->messenger()
->addStatus($this->t('Your settings have been saved.'));
}
}
Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.