Jak ustawić stałą liczbę wartości na 11?


14

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?

Odpowiedzi:


20

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.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.