Réponses:
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.
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.