Tôi có các thiết lập sau đây.
dropdown_one
[
'#type' => 'chọn',
'#title' => $this->t('Dropdown one'),
'#options' => $dropdownOneOptions,
'#empty_option' => '---',
'#cân nặng' => 1,
'#ajax' => [
'sự kiện' => 'thay đổi',
'callback' => [$this, 'getDropdownTwoOptions'],
'trình bao bọc' => 'thả xuống hai',
'tiến độ' => [
'gõ' => 'đập',
],
],
'#name' => 'dropdown_one',
]
dropdown_two
[
'#type' => 'chọn',
'#title' => $this->t('Dropdown two'),
'#options' => [],
'#empty_option' => '---',
'#cân nặng' => 2,
'#ajax' => [
'sự kiện' => 'thay đổi',
'gọi lại' => [$this, 'getDropdownThreeOptions'],
'trình bao bọc' => 'danh sách thả xuống ba',
'tiến độ' => [
'gõ' => 'đập',
],
],
'#name' => 'dropdown_two',
'#prefix' => sprintf('<div id="%s">', 'dropdown-two'),
'#suffix' => '</div>',
'#states' => [
'vô hình' => [
':input[name="dropdown_one"]' => ['value' => ''],
],
],
]
dropdown_ba
[
'#type' => 'chọn',
'#title' => $this->t('Ba danh sách thả xuống'),
'#options' => [],
'#empty_option' => '---',
'#cân nặng' => 3,
'#name' => 'dropdown_three',
'#prefix' => sprintf('<div id="%s">', 'dropdown-ba'),
'#suffix' => '</div>',
'#states' => [
'vô hình' => [
':input[name="dropdown_two"]' => ['value' => ''],
],
],
]
Các tùy chọn trường chọn của danh sách thả xuống hai và danh sách thả xuống ba được cập nhật/đặt thông qua lệnh gọi lại AJAX tương ứng của chúng, với HtmlCommand()
.
$response = new AjaxResponse();
$wrapper_id = $triggeringElement['#ajax']['wrapper']; // 'dropdown-hai' hoặc 'dropdown-ba'
$response->addCommand(new HtmlCommand("#$wrapper_id select", $html)); // $html = "<option value='foo'>bar</option>...";
Tôi đang cố gắng tìm ra lý do tại sao trường hợp này không hoạt động:
Đưa ra trong danh sách thả xuống, một tùy chọn không trống được chọn
Và danh sách thả xuống hai được hiển thị
Và một tùy chọn không trống được chọn trong danh sách thả xuống hai
Và menu thả xuống ba được hiển thị
Khi tôi chọn tùy chọn trống trong danh sách thả xuống
Sau đó, danh sách thả xuống hai và danh sách thả xuống ba sẽ không được hiển thị
Thật không may, khi tôi chạy tập hợp hành động này, ba danh sách thả xuống vẫn hiển thị và tôi không thể hiểu tại sao.
Tôi thực sự sẽ đánh giá cao nếu ai đó có thể giúp đỡ.