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?

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.


En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.