field_ui_field_edit_form
function field_ui_field_edit_form
field_ui_field_edit_form($form, &$form_state, $instance)
Form constructor for the field instance settings form.
See also
field_ui_field_edit_form_validate()
field_ui_field_edit_form_submit()
Related topics
File
- modules/field_ui/field_ui.admin.inc, line 1801
- Administrative interface for custom field type creation.
Code
function field_ui_field_edit_form($form, &$form_state, $instance) { $bundle = $instance['bundle']; $entity_type = $instance['entity_type']; $field = field_info_field($instance['field_name']); drupal_set_title($instance['label']); $form['#field'] = $field; $form['#instance'] = $instance; if (!empty($field['locked'])) { $form['locked'] = array( '#markup' => t('The field %field is locked and cannot be edited.', array('%field' => $instance['label'])), ); return $form; } $field_type = field_info_field_types($field['type']); $widget_type = field_info_widget_types($instance['widget']['type']); $bundles = field_info_bundles(); // Create a form structure for the instance values. $form['instance'] = array( '#tree' => TRUE, '#type' => 'fieldset', '#title' => t('%type settings', array('%type' => $bundles[$entity_type][$bundle]['label'])), '#description' => t('These settings apply only to the %field field when used in the %type type.', array( '%field' => $instance['label'], '%type' => $bundles[$entity_type][$bundle]['label'], )), // Ensure field_ui_field_edit_instance_pre_render() gets called in addition // to, not instead of, the #pre_render function(s) needed by all fieldsets. '#pre_render' => array_merge(array('field_ui_field_edit_instance_pre_render'), element_info_property('fieldset', '#pre_render', array())), ); // Build the non-configurable instance values. $form['instance']['field_name'] = array( '#type' => 'value', '#value' => $instance['field_name'], ); $form['instance']['entity_type'] = array( '#type' => 'value', '#value' => $entity_type, ); $form['instance']['bundle'] = array( '#type' => 'value', '#value' => $bundle, ); $form['instance']['widget']['weight'] = array( '#type' => 'value', '#value' => !empty($instance['widget']['weight']) ? $instance['widget']['weight'] : 0, ); // Build the configurable instance values. $form['instance']['label'] = array( '#type' => 'textfield', '#title' => t('Label'), '#default_value' => !empty($instance['label']) ? $instance['label'] : $field['field_name'], '#required' => TRUE, '#weight' => -20, ); $form['instance']['required'] = array( '#type' => 'checkbox', '#title' => t('Required field'), '#default_value' => !empty($instance['required']), '#weight' => -10, ); $form['instance']['description'] = array( '#type' => 'textarea', '#title' => t('Help text'), '#default_value' => !empty($instance['description']) ? $instance['description'] : '', '#rows' => 5, '#description' => t('Instructions to present to the user below this field on the editing form.<br />Allowed HTML tags: @tags', array('@tags' => _field_filter_xss_display_allowed_tags())), '#weight' => -5, ); // Build the widget component of the instance. $form['instance']['widget']['type'] = array( '#type' => 'value', '#value' => $instance['widget']['type'], ); $form['instance']['widget']['module'] = array( '#type' => 'value', '#value' => $widget_type['module'], ); $form['instance']['widget']['active'] = array( '#type' => 'value', '#value' => !empty($field['instance']['widget']['active']) ? 1 : 0, ); // Add additional field instance settings from the field module. $additions = module_invoke($field['module'], 'field_instance_settings_form', $field, $instance); if (is_array($additions)) { $form['instance']['settings'] = $additions; } // Add additional widget settings from the widget module. $additions = module_invoke($widget_type['module'], 'field_widget_settings_form', $field, $instance); if (is_array($additions)) { $form['instance']['widget']['settings'] = $additions; $form['instance']['widget']['active']['#value'] = 1; } // Add handling for default value if not provided by any other module. if (field_behaviors_widget('default value', $instance) == FIELD_BEHAVIOR_DEFAULT && empty($instance['default_value_function'])) { $form['instance']['default_value_widget'] = field_ui_default_value_widget($field, $instance, $form, $form_state); } $has_data = field_has_data($field); if ($has_data) { $description = '<p>' . t('These settings apply to the %field field everywhere it is used. Because the field already has data, some settings can no longer be changed.', array('%field' => $instance['label'])) . '</p>'; } else { $description = '<p>' . t('These settings apply to the %field field everywhere it is used.', array('%field' => $instance['label'])) . '</p>'; } // Create a form structure for the field values. $form['field'] = array( '#type' => 'fieldset', '#title' => t('%field field settings', array('%field' => $instance['label'])), '#description' => $description, '#tree' => TRUE, ); // Build the configurable field values. $description = t('Maximum number of values users can enter for this field.'); if (field_behaviors_widget('multiple values', $instance) == FIELD_BEHAVIOR_DEFAULT) { $description .= '<br/>' . t("'Unlimited' will provide an 'Add more' button so the users can add as many values as they like."); } $form['field']['cardinality'] = array( '#type' => 'select', '#title' => t('Number of values'), '#options' => array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + drupal_map_assoc(range(1, 10)), '#default_value' => $field['cardinality'], '#description' => $description, ); // Add additional field type settings. The field type module is // responsible for not returning settings that cannot be changed if // the field already has data. $additions = module_invoke($field['module'], 'field_settings_form', $field, $instance, $has_data); if (is_array($additions)) { $form['field']['settings'] = $additions; } $form['actions'] = array('#type' => 'actions'); $form['actions']['submit'] = array('#type' => 'submit', '#value' => t('Save settings')); return $form; }
© 2001–2016 by the original authors
Licensed under the GNU General Public License, version 2 and later.
Drupal is a registered trademark of Dries Buytaert.
https://api.drupal.org/api/drupal/modules!field_ui!field_ui.admin.inc/function/field_ui_field_edit_form/7.x