Câu trả lời:
Các tùy chọn cardinality được mã hóa cứng vào field_ui_field_edit_form()
hàm bằng các dòng mã sau:
$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,
);
Đây là drupal_map_assoc(range(1, 10))
dòng giới hạn số lượng đến 10.
Dường như không có giá trị tối đa được xác thực (hoặc giới hạn hơn nữa) ở bất kỳ nơi nào khác, mặc dù (ít nhất là không phải theo cốt lõi), do đó, sẽ khá dễ dàng để cung cấp thêm tùy chọn cho giá trị đó bằng cách sử dụng móc thay đổi biểu mẫu:
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;
}
Tôi vừa mới thử nó và dường như không có tác dụng phụ nào cả. Hệ thống trường tôn trọng mọi số lượng thẻ bạn đặt cao hơn 10 và lưu nó mà không gặp vấn đề gì khi bạn chỉnh sửa trường trong giao diện người dùng quản trị viên.
Tôi đã sử dụng dự án hộp cát này để giải quyết vấn đề tương tự: https://www.drupal.org/sandbox/ydahi/2421885
Nó cung cấp một giao diện người dùng để đặt phạm vi cho số lượng giá trị.