Một biểu mẫu như sau sẽ hiển thị các trường bổ sung khi người dùng chọn "Có" trong nút radio "Hiển thị thêm". Khi được hiển thị, phần khác có trường văn bản "Tên" và bộ radio "Giới tính".
Nhưng nó không bao giờ hoạt động như mong đợi. Nhãn "Giới tính" sẽ ở đó nhưng các nút radio không bao giờ được hiển thị. Tôi biết việc thay đổi "Giới tính" thành radio sẽ hiệu quả, nhưng vì lý do nào đó, tôi cần sử dụng nhiều nút radio. Có cách nào tôi có thể làm cho công việc này?
<?php
không gian tên Drupal\mymodule\Form;
sử dụng Drupal\Core\Form\FormBase;
lớp DonationPrepareForm mở rộng FormBase {
/**
* {@inheritdoc}
*/
hàm công khai getFormId() {
trả về 'my_form';
}
/**
* {@inheritdoc}
*/
hàm công khai buildForm(
mảng $form,
FormStateInterface $form_state
) {
$form['show_more'] = [
'#type' => 'radio',
'#title' => 'Hiển thị thêm',
'#options' => [
'Y' => 'Có',
'N' => 'Không',
],
'#ajax' => [
'gọi lại' => '::ajaxBuildForm',
'trình bao bọc' => 'chỉnh sửa thêm trình bao bọc',
'tiến độ' => [
'gõ' => 'đập',
'tin nhắn' => $this->t('Đang tải...'),
],
],
];
$form['more'] = [
'#type' => 'thùng chứa',
'#prefix' => '<div id="edit-more-wrapper">',
'#suffix' => '</div>',
];
trả về biểu mẫu $;
}
hàm công khai ajaxBuildForm(mảng &$form, FormStateInterface $form_state)
{
if ($form_state->getValue('show_more') === 'Y') {
$form['more']['name'] = [
'#type' => 'trường văn bản',
'#title' => 'Tên',
'#required' => ĐÚNG,
];
$form['more']['giới tính'] = [
'#type' => 'radio',
'#title' => 'Giới tính',
'#options' => [
'M' => 'Nam',
'F' => 'Nữ',
],
'#required' => ĐÚNG,
];
}
trả về $form['more'];
}
}
Câu hỏi tương tự mở rộng cho các phần tử biểu mẫu tổng hợp khác (ví dụ:hộp kiểm). Có cách nào để AJAX hoạt động cho họ không?