xandeadx.ru Блог музицирующего веб-девелопера

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

Опубликовано в

Код позволяет в настройках поля выбрать первоначальное число значений для 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
Похожие записи

Комментарии RSS

если поставить 0, то самого инпута не будет пока не нажать кнопку "Add more"?

Из кода же видно, что нет

$instance['settings']['default_cardinality'] > 1

Оставить комментарий

Содержимое этого поля является приватным и не будет отображаться публично. Если у вас есть аккаунт в Gravatar, привязанный к этому e-mail адресу, то он будет использован для отображения аватара.
  • Адреса страниц и электронной почты автоматически преобразуются в ссылки.
  • Доступные HTML теги: <a> <i> <b> <strong> <code> <ul> <ol> <li> <blockquote> <em> <s>
  • Строки и параграфы переносятся автоматически.
  • Подсветка кода осуществляется с помощью тегов: <code>, <css>, <html>, <ini>, <javascript>, <sql>, <php>. Поддерживаемые стили выделения кода: <foo>, [foo].

Подробнее о форматировании