Как установить фиксированное количество значений на 11?

14

Я настраиваю поле с несколькими значениями. Максимальное фиксированное количество значений, которое я могу настроить, составляет 10.

Если я хочу больше, я должен установить это без ограничений.

Есть ли способ установить фиксированное количество значений в поле до 11 значений?

Йерун
источник

Ответы:

20

Параметры кардинальности жестко запрограммированы в field_ui_field_edit_form()функции с помощью следующих строк кода:

$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,
);

Это drupal_map_assoc(range(1, 10))линия, которая ограничивает число до 10.

Не похоже, что максимальная мощность проверяется (или дополнительно ограничивается) где-либо еще, хотя (по крайней мере, не ядром), поэтому было бы довольно легко предложить больше вариантов для этого значения, используя хук изменения формы:

function MYMODULE_form_field_ui_field_edit_form_alter(&$form, &$form_state, $form_id) {
  // Increase the max cardinality to 20
  $range = drupal_map_assoc(range(1, 20));
  $new_options =  array(FIELD_CARDINALITY_UNLIMITED => t('Unlimited')) + $range;

  // Change the options
  $form['field']['cardinality']['#options'] = $new_options;
}

Я только что попробовал это, и у этого, кажется, нет никаких побочных эффектов вообще. Полевая система учитывает любую установленную вами мощность, превышающую 10, и сохраняет ее без проблем при редактировании поля в пользовательском интерфейсе администратора.

Клайв
источник
0

Я использовал этот проект песочницы для решения той же проблемы: https://www.drupal.org/sandbox/ydahi/2421885

Он предоставляет пользовательский интерфейс для установки диапазона для количества значений.

ymdahi
источник