Wie setze ich die feste Anzahl von Werten auf 11?

15

Ich richte ein Feld mit mehreren Werten ein. Die maximale feste Anzahl von Werten, die ich konfigurieren kann, ist 10.

Wenn ich mehr möchte, muss ich dies auf unbegrenzt setzen.

Gibt es eine Möglichkeit, die feste Anzahl von Werten in einem Feld auf 11 Werte festzulegen?

jeroen
quelle

Antworten:

20

Die Kardinalitätsoptionen sind field_ui_field_edit_form()mit den folgenden Codezeilen fest in die Funktion codiert :

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

Es ist die drupal_map_assoc(range(1, 10))Linie, die die Zahl auf 10 begrenzt.

Es scheint jedoch nicht, dass die maximale Kardinalität irgendwo anders validiert (oder weiter eingeschränkt) ist (zumindest nicht nach Kern), daher wäre es ziemlich einfach, mit einem Form-Alter-Hook mehr Optionen für diesen Wert anzubieten:

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;
}

Ich habe es gerade ausprobiert und es scheint überhaupt keine Nebenwirkungen zu haben. Das Feldsystem berücksichtigt alle von Ihnen festgelegten Kardinalitäten, die höher als 10 sind, und speichert sie problemlos, wenn Sie das Feld in der Admin-Benutzeroberfläche bearbeiten.

Clive
quelle
0

Ich habe dieses Sandbox-Projekt verwendet, um das gleiche Problem zu lösen: https://www.drupal.org/sandbox/ydahi/2421885

Es bietet eine Benutzeroberfläche zum Festlegen des Bereichs für die Anzahl der Werte.

ymdahi
quelle