it-swarm.com.de

Wie setze ich die feste Anzahl von Werten auf 11?

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

Wenn ich mehr will, muss ich dies auf unbegrenzt setzen.

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

14
jeroen

Die Kardinalitätsoptionen werden mithilfe dieser Codezeilen fest in die Funktion field_ui_field_edit_form() 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 Zeile drupal_map_assoc(range(1, 10)), die die Anzahl auf 10 begrenzt.

Es scheint jedoch nicht, dass die maximale Kardinalität irgendwo anders validiert (oder weiter eingeschränkt) wird (zumindest nicht durch den Kern), so dass es ziemlich einfach wäre, mehr Optionen für diesen Wert mithilfe eines Form-Alter-Hooks 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 das gerade ausprobiert und es scheint überhaupt keine Nebenwirkungen zu haben. Das Feldsystem berücksichtigt jede von Ihnen festgelegte Kardinalität, die höher als 10 ist, und speichert sie problemlos, wenn Sie das Feld in der Administrator-Benutzeroberfläche bearbeiten.

20
Clive

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.

0
ymdahi