FieldStorageConfigEditForm::form

public FieldStorageConfigEditForm::form(array $form, FormStateInterface $form_state)

Gets the actual form array to be built.

Overrides EntityForm::form

See also

\Drupal\Core\Entity\EntityForm::processForm()

\Drupal\Core\Entity\EntityForm::afterBuild()

File

core/modules/field_ui/src/Form/FieldStorageConfigEditForm.php, line 60

Class

FieldStorageConfigEditForm
Provides a form for the "field storage" edit page.

Namespace

Drupal\field_ui\Form

Code

public function form(array $form, FormStateInterface $form_state) {
  $form = parent::form($form, $form_state);

  $field_label = $form_state->get('field_config')->label();
  $form['#title'] = $field_label;
  $form['#prefix'] = '<p>' . $this->t('These settings apply to the %field field everywhere it is used. These settings impact the way that data is stored in the database and cannot be changed once data has been created.', array('%field' => $field_label)) . '</p>';

  // See if data already exists for this field.
  // If so, prevent changes to the field settings.
  if ($this->entity->hasData()) {
    $form['#prefix'] = '<div class="messages messages--error">' . $this->t('There is data for this field in the database. The field settings can no longer be changed.') . '</div>' . $form['#prefix'];
  }

  // Add settings provided by the field module. The field module is
  // responsible for not returning settings that cannot be changed if
  // the field already has data.
  $form['settings'] = array(
    '#weight' => -10,
    '#tree' => TRUE,
  );
  // Create an arbitrary entity object, so that we can have an instantiated
  // FieldItem.
  $ids = (object) array(
    'entity_type' => $form_state->get('entity_type_id'),
    'bundle' => $form_state->get('bundle'),
    'entity_id' => NULL
  );
  $entity = _field_create_entity_from_ids($ids);
  $items = $entity->get($this->entity->getName());
  $item = $items->first() ? : $items->appendItem();
  $form['settings'] += $item->storageSettingsForm($form, $form_state, $this->entity->hasData());

  // Build the configurable field values.
  $cardinality = $this->entity->getCardinality();
  $form['cardinality_container'] = array(
    // Reset #parents so the additional container does not appear.
    '#parents' => array(),
    '#type' => 'fieldset',
    '#title' => $this->t('Allowed number of values'),
    '#attributes' => array('class' => array(
      'container-inline',
      'fieldgroup',
      'form-composite'
    )),
  );
  $form['cardinality_container']['cardinality'] = array(
    '#type' => 'select',
    '#title' => $this->t('Allowed number of values'),
    '#title_display' => 'invisible',
    '#options' => array(
      'number' => $this->t('Limited'),
      FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED => $this->t('Unlimited'),
    ),
    '#default_value' => ($cardinality == FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED) ? FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED : 'number',
  );
  $form['cardinality_container']['cardinality_number'] = array(
    '#type' => 'number',
    '#default_value' => $cardinality != FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED ? $cardinality : 1,
    '#min' => 1,
    '#title' => $this->t('Limit'),
    '#title_display' => 'invisible',
    '#size' => 2,
    '#states' => array(
      'visible' => array(
        ':input[name="cardinality"]' => array('value' => 'number'),
      ),
      'disabled' => array(
        ':input[name="cardinality"]' => array('value' => FieldStorageDefinitionInterface::CARDINALITY_UNLIMITED),
      ),
    ),
  );

  return $form;
}
doc_Drupal
2016-10-29 09:12:28
Comments
Leave a Comment

Please login to continue.