Drupal → Установить дефолтное число значений для unlimited поля

28.09.2017

Код позволяет в настройках поля выбрать первоначальное число значений для unlimited поля:

/**
 * Implements hook_form_FORM_ID_alter(): field_ui_field_edit_form.
 */
function hook_form_field_ui_field_edit_form_alter(&$form, $form_state) {
  $field_instance = $form['#instance'];

  $form['instance']['settings']['default_cardinality'] = array(
    '#type' => 'textfield',
    '#title' => t('Default cardinality'),
    '#default_value' => isset($field_instance['settings']['default_cardinality']) ? $field_instance['settings']['default_cardinality'] : 1,
    '#weight' => 10,
    '#states' => array(
      'visible' => array(
        '#edit-field-cardinality' => array(
          'value' => FIELD_CARDINALITY_UNLIMITED,
        ),
      ),
    ),
  );
}

/**
 * Implements hook_field_update_instance().
 */
function hook_field_update_instance($instance, $prior_instance) {
  $field = field_info_field($instance['field_name']);

  if ($field['cardinality'] == FIELD_CARDINALITY_UNLIMITED && $instance['settings']['default_cardinality'] > 1) {
    $instance['default_value'] = array_fill(0, $instance['settings']['default_cardinality'] - 1, NULL);
    _field_write_instance($instance, TRUE);
  }
}
Написанное актуально для
Drupal 7
Похожие записи

Добавить комментарий