Làm cách nào để đặt lượng giá trị cố định thành 11?


15

Tôi đang thiết lập một trường có nhiều giá trị. Số lượng giá trị cố định tối đa tôi có thể định cấu hình là 10.

Nếu tôi muốn nhiều hơn tôi phải đặt cái này thành không giới hạn.

Có cách nào để đặt lượng giá trị cố định trên một trường thành 11 giá trị không?

Câu trả lời:


20

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.


Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.