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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | 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 ; } |
Please login to continue.