Konfiguruję pole z wieloma wartościami. Maksymalna stała wartość, którą mogę skonfigurować, wynosi 10.
Jeśli chcę więcej, muszę ustawić tę wartość na nieograniczoną.
Czy istnieje sposób, aby ustawić stałą liczbę wartości w polu na 11 wartości?
Opcje liczności są na stałe zakodowane w field_ui_field_edit_form()
funkcji za pomocą następujących wierszy kodu:
$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,
);
Jest to drupal_map_assoc(range(1, 10))
linia, która ogranicza liczbę do 10.
Nie wydaje się jednak, aby maksymalna liczność była sprawdzana (lub dalej ograniczana) nigdzie indziej, chociaż (przynajmniej nie według rdzenia), więc byłoby dość łatwo zaoferować więcej opcji dla tej wartości za pomocą haka do zmiany formularza:
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;
}
Właśnie to wypróbowałem i wydaje się, że nie ma żadnych skutków ubocznych. System pól szanuje każdą ustawioną liczność większą niż 10 i zapisuje ją bez problemu podczas edycji pola w interfejsie administratora.
Użyłem tego projektu piaskownicy, aby rozwiązać ten sam problem: https://www.drupal.org/sandbox/ydahi/2421885
Udostępnia interfejs do ustawiania zakresu liczby wartości.