You are here

function field_config_cardinality_field_widget_multivalue_form_alter in Field Config Cardinality 8.2

Same name and namespace in other branches
  1. 8 field_config_cardinality.module \field_config_cardinality_field_widget_multivalue_form_alter()

Implements hook_form_alter().

Parameters

$elements:

FormStateInterface $form_state:

$context:

File

./field_config_cardinality.module, line 118
Field_config_cardinality.module.

Code

function field_config_cardinality_field_widget_multivalue_form_alter(&$elements, FormStateInterface $form_state, $context) {
  $cardinality_config = array();

  /** @var \Drupal\field\Entity\FieldConfig $field_definition */
  $field_definition = $context['items']
    ->getFieldDefinition();
  if (method_exists($field_definition, 'getOriginalId')) {
    $cardinality_config = $field_definition
      ->getThirdPartySetting('field_config_cardinality', 'cardinality_config');
    if (!empty($cardinality_config)) {
      $elements['#attributes']['data-fcc'] = $cardinality_config;
    }
  }

  // Implementation for multi managed_file
  if (!empty($elements['#type']) && $elements['#type'] == 'managed_file') {
    if (!empty($cardinality_config) && $cardinality_config >= 1) {
      if ($elements['#delta'] > $cardinality_config - 1) {
        $elements['#access'] = FALSE;
      }
    }
  }

  // Implementation for multi select type
  if (!empty($elements['#type']) && $elements['#type'] == 'select') {
    if (!empty($cardinality_config) && $cardinality_config >= 1) {
      $elements['#multiple'] = FALSE;
    }
  }
}