web-dev-qa-db-fra.com

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

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?

14
jeroen

Les options de cardinalité sont codées en dur dans la fonction field_ui_field_edit_form() en utilisant 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 ligne drupal_map_assoc(range(1, 10)) 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.

20
Clive

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.

0
ymdahi