Como faço para definir a quantidade fixa de valores como 11?

15

Estou configurando um campo com vários valores. A quantidade máxima fixa de valores que posso configurar é 10.

Se eu quiser mais, tenho que definir isso como ilimitado.

Existe uma maneira de definir a quantidade fixa de valores em um campo para 11 valores?

jeroen
fonte

Respostas:

20

As opções de cardinalidade são codificadas na field_ui_field_edit_form()função usando estas linhas de código:

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

É a drupal_map_assoc(range(1, 10))linha que limita o número a 10.

Parece que a cardinalidade máxima é validada (ou ainda mais limitada) em qualquer outro lugar, embora (pelo menos não pelo núcleo), por isso seria muito fácil oferecer mais opções para esse valor usando um alter hook de forma:

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

Eu apenas tentei isso e parece não ter efeitos colaterais. O sistema de campo respeita qualquer cardinalidade definida acima de 10 e a salva sem problemas quando você edita o campo na UI do administrador.

Clive
fonte
0

Usei esse projeto de sandbox para resolver o mesmo problema: https://www.drupal.org/sandbox/ydahi/2421885

Ele fornece uma interface do usuário para definir o intervalo para o número de valores.

ymdahi
fonte