Как настроить условие (CONDITIONAL LOGIC) в веб-форме для определенных полей в блоках с флажками?

Главные вкладки

Аватар пользователя rukoved rukoved 19 апреля 2023 в 22:13

Есть два блока с флажками, в каждом несколько значений. Посредством веб-форм можно настроить изменение по условию только для определенного блока, без выбора его значений.
Например:
1-й блок с флажками содержит 3 поля со значениями "111", "222", "333"
2-й блок содержит содержит 3 поля со значениями "aaa", "bbb", "ccc"
Надо выбрать 1-й блок со значением 222 и если он включен то значение "ссс" 2-го блока должно быть включено, но дело в том, что выбрать значение для 1-го блока невозможно, там не предусмотрен такой вариант.
Можно конечно кодом написать, но может есть готовое решение или модуль для веб-форм со сложными условиями и возможностью сравнения по значениям с обоих сторон?

Лучший ответ

Аватар пользователя madt madt 21 апреля 2023 в 9:24
1

Правильно понимаю, что тебе нужно сделать так, чтобы в блоке 2 чекбокс «ссс» включался сам, когда пользователь включает чекбокс «222» в блоке 1?

Если, да, то создавай блоки как элемент Fieldset и в них для каждого чекбокса добавляй отдельные элементы Checkbox (а не Checkboxes). Затем можно будет настроить Condition как на скринкасте ниже.

uuid: 54d51b03-4d8b-4ac8-bcb8-e99ff71207d0
langcode: ru
!>status: open
dependencies: {  }
weight: 0
open: null
close: null
uid: 1
template: false
archive: false
id: test_145493
title: 'Test 145493'
description: ''
category: ''
elements: |-
  block_1:
    '#type': fieldset
    '#title': 'Block 1'
    checkbox_111:
      '#type': checkbox
      '#title': '111'
    checkbox_222:
      '#type': checkbox
      '#title': '222'
    checkbox_333:
      '#type': checkbox
      '#title': '333'
  block_2:
    '#type': fieldset
    '#title': 'Block 2'
    checkbox_aaa:
      '#type': checkbox
      '#title': aaa
    checkbox_bbb:
      '#type': checkbox
      '#title': bbb
    checkbox_ccc:
      '#type': checkbox
      '#title': ccc
      '#states':
        checked:
          ':input[name="checkbox_222"]':
            checked: true
css: ''
javascript: ''
settings:
  ajax: false
  ajax_scroll_top: form
  ajax_progress_type: ''
  ajax_effect: ''
  ajax_speed: null
  page: true
  page_submit_path: ''
  page_confirm_path: ''
  page_theme_name: ''
  form_title: both
  form_submit_once: false
  form_open_message: ''
  form_close_message: ''
  form_exception_message: ''
  form_previous_submissions: true
  form_confidential: false
  form_confidential_message: ''
  form_disable_remote_addr: false
  form_convert_anonymous: false
  form_prepopulate: false
  form_prepopulate_source_entity: false
  form_prepopulate_source_entity_required: false
  form_prepopulate_source_entity_type: ''
  form_unsaved: false
  form_disable_back: false
  form_submit_back: false
  form_disable_autocomplete: false
  form_novalidate: false
  form_disable_inline_errors: false
  form_required: false
  form_autofocus: false
  form_details_toggle: false
  form_reset: false
  form_access_denied: default
  form_access_denied_title: ''
  form_access_denied_message: ''
  form_access_denied_attributes: {  }
  form_file_limit: ''
  form_attributes: {  }
  form_method: ''
  form_action: ''
  share: false
  share_node: false
  share_theme_name: ''
  share_title: true
  share_page_body_attributes: {  }
  submission_label: ''
  submission_exception_message: ''
  submission_locked_message: ''
  submission_log: false
  submission_excluded_elements: {  }
  submission_exclude_empty: false
  submission_exclude_empty_checkbox: false
  submission_views: {  }
  submission_views_replace: {  }
  submission_user_columns: {  }
  submission_user_duplicate: false
  submission_access_denied: default
  submission_access_denied_title: ''
  submission_access_denied_message: ''
  submission_access_denied_attributes: {  }
  previous_submission_message: ''
  previous_submissions_message: ''
  autofill: false
  autofill_message: ''
  autofill_excluded_elements: {  }
  wizard_progress_bar: true
  wizard_progress_pages: false
  wizard_progress_percentage: false
  wizard_progress_link: false
  wizard_progress_states: false
  wizard_start_label: ''
  wizard_preview_link: false
  wizard_confirmation: true
  wizard_confirmation_label: ''
  wizard_auto_forward: true
  wizard_auto_forward_hide_next_button: false
  wizard_keyboard: true
  wizard_track: ''
  wizard_prev_button_label: ''
  wizard_next_button_label: ''
  wizard_toggle: false
  wizard_toggle_show_label: ''
  wizard_toggle_hide_label: ''
  preview: 0
  preview_label: ''
  preview_title: ''
  preview_message: ''
  preview_attributes: {  }
  preview_excluded_elements: {  }
  preview_exclude_empty: true
  preview_exclude_empty_checkbox: false
  draft: none
  draft_multiple: false
  draft_auto_save: false
  draft_saved_message: ''
  draft_loaded_message: ''
  draft_pending_single_message: ''
  draft_pending_multiple_message: ''
  confirmation_type: page
  confirmation_url: ''
  confirmation_title: ''
  confirmation_message: ''
  confirmation_attributes: {  }
  confirmation_back: true
  confirmation_back_label: ''
  confirmation_back_attributes: {  }
  confirmation_exclude_query: false
  confirmation_exclude_token: false
  confirmation_update: false
  limit_total: null
  limit_total_interval: null
  limit_total_message: ''
  limit_total_unique: false
  limit_user: null
  limit_user_interval: null
  limit_user_message: ''
  limit_user_unique: false
  entity_limit_total: null
  entity_limit_total_interval: null
  entity_limit_user: null
  entity_limit_user_interval: null
  purge: none
  purge_days: null
  results_disabled: false
  results_disabled_ignore: false
  results_customize: false
  token_view: false
  token_update: false
  token_delete: false
  serial_disabled: false
access:
  create:
    roles:
      - anonymous
      - authenticated
    users: {  }
    permissions: {  }
  view_any:
    roles: {  }
    users: {  }
    permissions: {  }
  update_any:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_any:
    roles: {  }
    users: {  }
    permissions: {  }
  purge_any:
    roles: {  }
    users: {  }
    permissions: {  }
  view_own:
    roles: {  }
    users: {  }
    permissions: {  }
  update_own:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_own:
    roles: {  }
    users: {  }
    permissions: {  }
  administer:
    roles: {  }
    users: {  }
    permissions: {  }
  test:
    roles: {  }
    users: {  }
    permissions: {  }
  configuration:
    roles: {  }
    users: {  }
    permissions: {  }
handlers: {  }
variants: {  }

Комментарии

Аватар пользователя madt madt 21 апреля 2023 в 9:24
1

Правильно понимаю, что тебе нужно сделать так, чтобы в блоке 2 чекбокс «ссс» включался сам, когда пользователь включает чекбокс «222» в блоке 1?

Если, да, то создавай блоки как элемент Fieldset и в них для каждого чекбокса добавляй отдельные элементы Checkbox (а не Checkboxes). Затем можно будет настроить Condition как на скринкасте ниже.

uuid: 54d51b03-4d8b-4ac8-bcb8-e99ff71207d0
langcode: ru
!>status: open
dependencies: {  }
weight: 0
open: null
close: null
uid: 1
template: false
archive: false
id: test_145493
title: 'Test 145493'
description: ''
category: ''
elements: |-
  block_1:
    '#type': fieldset
    '#title': 'Block 1'
    checkbox_111:
      '#type': checkbox
      '#title': '111'
    checkbox_222:
      '#type': checkbox
      '#title': '222'
    checkbox_333:
      '#type': checkbox
      '#title': '333'
  block_2:
    '#type': fieldset
    '#title': 'Block 2'
    checkbox_aaa:
      '#type': checkbox
      '#title': aaa
    checkbox_bbb:
      '#type': checkbox
      '#title': bbb
    checkbox_ccc:
      '#type': checkbox
      '#title': ccc
      '#states':
        checked:
          ':input[name="checkbox_222"]':
            checked: true
css: ''
javascript: ''
settings:
  ajax: false
  ajax_scroll_top: form
  ajax_progress_type: ''
  ajax_effect: ''
  ajax_speed: null
  page: true
  page_submit_path: ''
  page_confirm_path: ''
  page_theme_name: ''
  form_title: both
  form_submit_once: false
  form_open_message: ''
  form_close_message: ''
  form_exception_message: ''
  form_previous_submissions: true
  form_confidential: false
  form_confidential_message: ''
  form_disable_remote_addr: false
  form_convert_anonymous: false
  form_prepopulate: false
  form_prepopulate_source_entity: false
  form_prepopulate_source_entity_required: false
  form_prepopulate_source_entity_type: ''
  form_unsaved: false
  form_disable_back: false
  form_submit_back: false
  form_disable_autocomplete: false
  form_novalidate: false
  form_disable_inline_errors: false
  form_required: false
  form_autofocus: false
  form_details_toggle: false
  form_reset: false
  form_access_denied: default
  form_access_denied_title: ''
  form_access_denied_message: ''
  form_access_denied_attributes: {  }
  form_file_limit: ''
  form_attributes: {  }
  form_method: ''
  form_action: ''
  share: false
  share_node: false
  share_theme_name: ''
  share_title: true
  share_page_body_attributes: {  }
  submission_label: ''
  submission_exception_message: ''
  submission_locked_message: ''
  submission_log: false
  submission_excluded_elements: {  }
  submission_exclude_empty: false
  submission_exclude_empty_checkbox: false
  submission_views: {  }
  submission_views_replace: {  }
  submission_user_columns: {  }
  submission_user_duplicate: false
  submission_access_denied: default
  submission_access_denied_title: ''
  submission_access_denied_message: ''
  submission_access_denied_attributes: {  }
  previous_submission_message: ''
  previous_submissions_message: ''
  autofill: false
  autofill_message: ''
  autofill_excluded_elements: {  }
  wizard_progress_bar: true
  wizard_progress_pages: false
  wizard_progress_percentage: false
  wizard_progress_link: false
  wizard_progress_states: false
  wizard_start_label: ''
  wizard_preview_link: false
  wizard_confirmation: true
  wizard_confirmation_label: ''
  wizard_auto_forward: true
  wizard_auto_forward_hide_next_button: false
  wizard_keyboard: true
  wizard_track: ''
  wizard_prev_button_label: ''
  wizard_next_button_label: ''
  wizard_toggle: false
  wizard_toggle_show_label: ''
  wizard_toggle_hide_label: ''
  preview: 0
  preview_label: ''
  preview_title: ''
  preview_message: ''
  preview_attributes: {  }
  preview_excluded_elements: {  }
  preview_exclude_empty: true
  preview_exclude_empty_checkbox: false
  draft: none
  draft_multiple: false
  draft_auto_save: false
  draft_saved_message: ''
  draft_loaded_message: ''
  draft_pending_single_message: ''
  draft_pending_multiple_message: ''
  confirmation_type: page
  confirmation_url: ''
  confirmation_title: ''
  confirmation_message: ''
  confirmation_attributes: {  }
  confirmation_back: true
  confirmation_back_label: ''
  confirmation_back_attributes: {  }
  confirmation_exclude_query: false
  confirmation_exclude_token: false
  confirmation_update: false
  limit_total: null
  limit_total_interval: null
  limit_total_message: ''
  limit_total_unique: false
  limit_user: null
  limit_user_interval: null
  limit_user_message: ''
  limit_user_unique: false
  entity_limit_total: null
  entity_limit_total_interval: null
  entity_limit_user: null
  entity_limit_user_interval: null
  purge: none
  purge_days: null
  results_disabled: false
  results_disabled_ignore: false
  results_customize: false
  token_view: false
  token_update: false
  token_delete: false
  serial_disabled: false
access:
  create:
    roles:
      - anonymous
      - authenticated
    users: {  }
    permissions: {  }
  view_any:
    roles: {  }
    users: {  }
    permissions: {  }
  update_any:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_any:
    roles: {  }
    users: {  }
    permissions: {  }
  purge_any:
    roles: {  }
    users: {  }
    permissions: {  }
  view_own:
    roles: {  }
    users: {  }
    permissions: {  }
  update_own:
    roles: {  }
    users: {  }
    permissions: {  }
  delete_own:
    roles: {  }
    users: {  }
    permissions: {  }
  administer:
    roles: {  }
    users: {  }
    permissions: {  }
  test:
    roles: {  }
    users: {  }
    permissions: {  }
  configuration:
    roles: {  }
    users: {  }
    permissions: {  }
handlers: {  }
variants: {  }
Аватар пользователя rukoved rukoved 21 апреля 2023 в 9:59

Благодарю, вы все правильно поняли! И я как раз пришла к мысли, что нужно заменить групповые флажки Checkboxes на Checkbox и к каждому применять условие, так-как в Checkboxes включался элемент группы. Ваш комментарий подтвердил мои предположения.