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?

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.


Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.