You are here

function field_config_cardinality_form_alter in Field Config Cardinality 8

Same name and namespace in other branches
  1. 8.2 field_config_cardinality.module \field_config_cardinality_form_alter()

Implements hook_form_alter().

Parameters

$form:

FormStateInterface $form_state: _id

File

./field_config_cardinality.module, line 29
Field_config_cardinality.module.

Code

function field_config_cardinality_form_alter(&$form, FormStateInterface $form_state, $form_id) {
  if ($form_id == 'field_config_edit_form') {

    /** @var \Drupal\field\Entity\FieldConfig $field_config */
    $field_config = $form_state
      ->getFormObject()
      ->getEntity();
    $cardinality = $field_config
      ->getFieldStorageDefinition()
      ->get('cardinality');
    $cardinality_config = $field_config
      ->getThirdPartySetting('field_config_cardinality', 'cardinality_config') ? $field_config
      ->getThirdPartySetting('field_config_cardinality', 'cardinality_config') : $cardinality;
    $form['cardinality_container'] = [
      // Reset #parents so the additional container does not appear.
      '#parents' => [],
      '#type' => 'fieldset',
      '#title' => t('Allowed number of values (Cardinality Instance)'),
      '#attributes' => [
        'class' => [
          'container-inline',
          'fieldgroup',
          'form-composite',
        ],
      ],
    ];
    $options = [
      'number' => t('Limited'),
      FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED => t('Unlimited'),
    ];
    if ($cardinality != -1) {
      unset($options['-1']);
    }
    $form['cardinality_container']['cardinality'] = [
      '#type' => 'select',
      '#title' => t('Allowed number of values'),
      '#title_display' => 'invisible',
      '#options' => $options,
      '#default_value' => $cardinality_config == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED : 'number',
    ];
    $max = $cardinality != -1 ? $cardinality : TRUE;
    $form['cardinality_container']['cardinality_number'] = [
      '#type' => 'number',
      '#default_value' => $cardinality_config != FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? $cardinality_config : 1,
      '#min' => 1,
      '#max' => $max,
      '#title' => t('Limit'),
      '#description' => t('Max number allowed:') . ($cardinality != -1 ? $cardinality : t('Unlimited')),
      '#title_display' => 'invisible',
      '#size' => 2,
      '#states' => [
        'visible' => [
          ':input[name="cardinality"]' => [
            'value' => 'number',
          ],
        ],
        'disabled' => [
          ':input[name="cardinality"]' => [
            'value' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED,
          ],
        ],
      ],
    ];
    $form['#entity_builders'][] = 'field_config_cardinality_form_builder';
  }
}