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?

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.


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.