Điểm:0

Điều kiện biểu mẫu web cho một lựa chọn đa giá trị

lá cờ cn

Tôi đang làm một bài kiểm tra sử dụng Webform. Tôi muốn sử dụng danh sách lựa chọn đa giá trị cho một trong các câu hỏi và muốn chấm điểm người dùng dựa trên bất kỳ tổ hợp câu trả lời đúng nào được chọn.

Sử dụng hình ảnh Webform Select mặc định của phần tử Cute Kittens làm ví dụ, cho các giá trị của lựa chọn:

  1. mèo con_1
  2. mèo con_2
  3. mèo con_3
  4. mèo con_4

Tôi muốn có thể nói rằng một sự kết hợp cụ thể của các lựa chọn là câu trả lời đúng. Giả sử mèo con_1 và mèo con_3, khi chúng được chọn, nó sẽ hiển thị phần tử có nội dung "Câu trả lời đúng!".

Từ những gì tôi có thể thấy về các điều kiện, chúng không thể được áp dụng cho nhiều giá trị. Tôi có thể tạo tùy chọn 'mẫu', nhưng điều đó sẽ chỉ cho tôi biết nếu mèo con_1 hoặc mèo con_3 hoặc cả hai được chọn, chứ không phải nếu cả hai đều được chọn.

Nếu điều này là không thể nếu không có mã tùy chỉnh, thì nó có thể được thêm thông qua một plugin, v.v., tôi cũng không thể tìm ra điều đó.

Tôi muốn giới thiệu điều này cho ai đó, vì vậy tôi đã sửa đổi mô-đun để thêm nó, khác bên dưới, nhưng rất giống một cách tốt hơn.

diff -r /tmp/webform/js/webform.states.js web/modules/contrib/webform/js/webform.states.js
115,119d114
< other if ('multi_value' trong tham chiếu) {
< const multiValue = tham chiếu['multi_value'].split(',');
< const equal = (multiValue.length === value.length) && (multiValue.sort().every((v, i) => v === value[i]));
< trả về bằng nhau;
< }
diff -r /tmp/webform/src/Element/WebformElementStates.php web/modules/contrib/webform/src/Element/WebformElementStates.php
485,486d484
< [$trigger_selector => ['value' => 'multi_value']],
< 'hoặc',
945c943
< otherif (in_array($trigger, ['multi_value', 'pattern', '!pattern', 'less', 'less_equal', 'greater', 'greater_equal', 'between', '!between'])) {
---
> otherif (in_array($trigger, ['pattern', '!pattern', 'less', 'less_equal', 'greater', 'greater_equal', 'between', '!between'])) {
1105d1102
< 'multi_value' => t('Đa giá trị'),
diff -r /tmp/webform/src/WebformEntityConditionsManager.php web/modules/contrib/webform/src/WebformEntityConditionsManager.php
75d74
< 'multi_value' => $this->t('có giá trị'),
233c232
< if (in_array($trigger_substate, ['multi_value', 'pattern', '!pattern', 'less', 'less_equal', 'greater', 'largeer_equal', 'between', '!between'])) {
---
> if (in_array($trigger_substate, ['pattern', '!pattern', 'less', 'less_equal', 'greater', 'greater_equal', 'between', '!between'])) {
diff -r /tmp/webform/src/WebformSubmissionConditionsValidator.php web/modules/contrib/webform/src/WebformSubmissionConditionsValidator.php
764c764
< if (in_array($trigger_substate, ['multi_value', 'pattern', '!pattern', 'less', 'less_equal', 'greater', 'largeer_equal', 'between', '!between'])) {
---
> if (in_array($trigger_substate, ['pattern', '!pattern', 'less', 'less_equal', 'greater', 'greater_equal', 'between', '!between'])) {
775,778c775
< if ($element_plugin->hasMultipleValues($element) && $trigger === 'multi_value') {
< $result = $this->checkConditionTrigger($trigger, $trigger_value, (mảng) $element_value);
< }
< otherif ($element_plugin->hasMultipleValues($element) && $trigger !== 'empty') {
---
> if ($element_plugin->hasMultipleValues($element) && $trigger !== 'empty') {
832,837d828
< 
< trường hợp 'multi_value':
< sắp xếp($element_value);
< $multi_values ​​= phát nổ(',', $trigger_value);
< sắp xếp($multi_values);   
< return $multi_values ​​=== $element_value;
No Sssweat avatar
lá cờ ua
Bạn có cân nhắc sử dụng [mô-đun bài kiểm tra](https://www.drupal.org/project/quiz) không?
Cameron avatar
lá cờ cn
Vâng, có vẻ khá lỗi vào lúc này và cũng quá mức cần thiết cho những gì chúng tôi muốn.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.