Giá trị trống - Chọn - Không xuất hiện cho các trường được chọn với yêu cầu trạng thái


8

Khi tôi tạo hộp chọn tiêu chuẩn bằng API biểu mẫu Drupal 7, giá trị đầu tiên (cũng là giá trị được chọn trên 'biểu mẫu trống' mới) là <option selected="selected" value="">- Select -</option>. Giá trị này không được chỉ định trong định nghĩa biểu mẫu và tôi không thay đổi biểu mẫu. (Điều này tốt)

Tuy nhiên, khi tôi tạo hộp chọn thứ hai phụ thuộc vào lần sử dụng đầu tiên #states, nó không có bất kỳ giá trị mặc định nào như vậy. Đối với các hình thức phức tạp với nhiều phụ thuộc, sự không nhất quán này là một vấn đề.

Một định nghĩa mẫu ví dụ như sau:

function sb_quickquote_test_form($form, &$form_state, $post=array()) {

  $fields['first_select'] = array(
    '#type'             => 'select',
    '#title'            => 'First select box',
    '#options'          => Array('First', 'Second', 'Third'),
    '#required'         => TRUE,
  );

  $fields['dependent_delect'] = array(
    '#type'             => 'select',
    '#title'            => 'Dependent select box',
    '#options'          => Array('Something', 'Another thing', 'Something else', 'Final thing'),
    '#states'           => Array(
      'visible' => Array('select[name=first_select]' => array('value' => '2')),
      'required' => Array('select[name=first_select]' => array('value' => '2')),
    ),
  );

  $fields['submit'] = array(
    '#type' => 'submit',
    '#value' => t('Submit'),
  );
  return $fields;
}

Trong ví dụ đơn giản này, chúng tôi có 2 hộp chọn và nút gửi. Hai hộp chọn được hiển thị là:

 ______________      ________________
| - Select - |v|    | Something    |v|
`--------------'    `----------------'
| - Select -   |    | Something      | <- no empty option
| First        |    | Another thing  |
| Second       |    | Something else |
| Third        |    | Final thing    |
 --------------      ----------------

(Do #statescài đặt, hộp chọn thứ hai chỉ xuất hiện khi hộp chọn thứ nhất có "Thứ ba" được chọn)

Sự không nhất quán này đang gây ra vấn đề trong tình huống chúng ta đang tạo các dạng động phức tạp với các trường phụ thuộc lẫn nhau.

Có ai có ý tưởng tại sao các lĩnh vực đang được cung cấp các tùy chọn không nhất quán và cách tiếp cận tốt nhất là giải quyết vấn đề không?

Câu trả lời:


20

Để buộc "tùy chọn trống", gán nó với một cái gì đó như:

"#empty_option"=>t('- Select -'),

Cảm ơn câu trả lời. Tôi không có Drupal được thiết lập ở bất cứ đâu để kiểm tra điều này vì vậy tôi sẽ phải chú ý đến nó và theo dõi các phiếu bầu từ người khác!
cá adamnfish

Bản sửa lỗi này cũng hoạt động cho Drupal 8
Scott Joudry

2

bạn cần thay đổi điều này:

 'visible' => Array('select[name=first_select]' => array('value' => '2')),
 'required' => Array('select[name=first_select]' => array('value' => '2')),

chọn để nhập dữ liệu

mã chính xác là:

 'visible' => Array(':input[name="first_select"]' => array('value' => '2')),
 'required' => Array(':input[name="first_select"]' => array('value' => '2')),

1

Để mở rộng câu trả lời doterobcn, bạn cũng có thể đặt giá trị trống (khóa) của tùy chọn trống.

Trong Drupal 8:

$form['country'] = [
  '#type' => 'select',
  '#multiple' => FALSE,
  '#title' => t('Country:'),
  '#required' => FALSE,
  '#options' => $countries,
  '#default_value' => 'FR',
  '#empty_option' => t('- None -'),
  '#empty_value' => '_none',
];

Mà sẽ cho:

<option value="_none">- None -</option>
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.