Bagaimana cara menetapkan jumlah nilai tetap ke 11?

14

Saya menyiapkan bidang dengan beberapa nilai. Jumlah nilai maksimum tetap yang dapat saya konfigurasi adalah 10.

Jika saya ingin lebih, saya harus mengatur ini menjadi tidak terbatas.

Apakah ada cara untuk menetapkan jumlah nilai tetap pada bidang menjadi 11 nilai?

jeroen
sumber

Jawaban:

20

Opsi kardinalitas dikodekan ke dalam field_ui_field_edit_form()fungsi menggunakan baris kode ini:

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

Ini adalah drupal_map_assoc(range(1, 10))garis yang membatasi angka ke 10.

Tampaknya kardinalitas maksimum tidak divalidasi (atau lebih terbatas lagi) di tempat lain, meskipun (setidaknya tidak dengan inti), jadi akan cukup mudah untuk menawarkan lebih banyak opsi untuk nilai itu menggunakan form alter hook:

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

Saya baru saja mencobanya dan sepertinya tidak memiliki efek samping sama sekali. Sistem bidang menghormati kardinalitas apa pun yang Anda atur lebih tinggi dari 10, dan menyimpannya tanpa masalah saat Anda mengedit bidang di UI admin.

Clive
sumber
0

Saya telah menggunakan proyek kotak pasir ini untuk menyelesaikan masalah yang sama: https://www.drupal.org/sandbox/ydahi/2421885

Ini memberikan UI untuk mengatur rentang jumlah nilai.

ymdahi
sumber