You are here

function extra_field_plus_form_entity_view_display_edit_form_submit in Extra Field Settings Provider 8

Same name and namespace in other branches
  1. 8.2 extra_field_plus.module \extra_field_plus_form_entity_view_display_edit_form_submit()

Implements submit handler for Field UI display (Manage Display) form.

Parameters

array $form: The form array.

\Drupal\Core\Form\FormStateInterface $form_state: The form state object.

1 string reference to 'extra_field_plus_form_entity_view_display_edit_form_submit'
extra_field_plus_form_entity_view_display_edit_form_alter in ./extra_field_plus.module
Implements hook_form_FORM_ID_alter().

File

./extra_field_plus.module, line 214
Main file for extra_field_plus module.

Code

function extra_field_plus_form_entity_view_display_edit_form_submit(array $form, FormStateInterface $form_state) {
  if (empty($form['#extra'])) {
    return;
  }
  $entity_type = $form['#entity_type'];
  $bundle = $form['#bundle'];
  $view_mode = \Drupal::routeMatch()
    ->getParameter('view_mode_name');

  /** @var \Drupal\Core\Entity\Display\EntityViewDisplayInterface $view_display */
  $view_display = \Drupal::entityTypeManager()
    ->getStorage('entity_view_display')
    ->load($entity_type . '.' . $bundle . '.' . $view_mode);
  $extra = \Drupal::service('plugin.manager.extra_field_display')
    ->fieldInfo();
  if ($view_display) {
    foreach ($form['#extra'] as $name) {
      if (isset($extra[$entity_type][$bundle]['display'][$name])) {
        $row = $form['fields'][$name];

        // Don't process for hidden field.
        if ($row['region']['#value'] == 'hidden') {
          continue;
        }
        $component = $view_display
          ->getComponent($name);

        // Get settings from user input if user submitted display form
        // while editing extra field settings.
        if ($form_state
          ->get('plugin_settings_update') == $name) {
          $user_input = $form_state
            ->getUserInput();
          $settings = $user_input['fields'][$name]['settings_edit_form']['settings'];
        }
        elseif ($form_state
          ->get($name)) {
          $settings = $form_state
            ->get($name);
        }
        else {
          $settings = $component['settings'];
        }
        $view_display
          ->setComponent($name, [
          'settings' => $settings,
        ] + $component)
          ->save();
      }
    }
  }
}