Comment définir le montant fixe de valeurs sur 11?

14

Je configure un champ avec plusieurs valeurs. La quantité fixe maximale de valeurs que je peux configurer est de 10.

Si je veux plus, je dois le régler sur illimité.

Existe-t-il un moyen de définir la quantité fixe de valeurs sur un champ à 11 valeurs?

jeroen
la source

Réponses:

20

Les options de cardinalité sont codées en dur dans la field_ui_field_edit_form()fonction à l'aide de ces lignes de code:

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

C'est la drupal_map_assoc(range(1, 10))ligne qui limite le nombre à 10.

Il ne semble pas que la cardinalité maximale soit validée (ou davantage limitée) ailleurs, bien que (du moins pas par cœur), il serait donc assez facile d'offrir plus d'options pour cette valeur en utilisant un crochet de modification de formulaire:

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

Je viens de l'essayer et cela ne semble avoir aucun effet secondaire. Le système de champs respecte toute cardinalité définie supérieure à 10 et l'enregistre sans problème lorsque vous modifiez le champ dans l'interface utilisateur d'administration.

Clive
la source
0

J'ai utilisé ce projet sandbox pour résoudre le même problème: https://www.drupal.org/sandbox/ydahi/2421885

Il fournit une interface utilisateur pour définir la plage du nombre de valeurs.

ymdahi
la source