0

I have an Webform with an option element, (option_one), with 6 options.

Below this are 2 option elements with 5 and 2 options.

These 2 option elements have a conditional statement to display if the correct option is selected on the, (option_one), option element.

Added email handlers to the form for the site admin and the submitter.

Using the default email format, all display as per the Webforms default email output, with the correct option element hidden as per the coditional statements.

Goal

Build my own twig template to enable me to theme the email using inline styles.

Below is the code used to check for the selected options.

UPDATE

Question simplified:

How to compare a Webform token with a given value in a twig 'if' statement?

{% if webform_token('[webform_submission:values:airports_to_radio]', webform_submission, [], options) == Heathrow %}

Don't want or need to go and build a submit handler via hook_form_alter()

{% if webform_token('[webform_submission:values:airports_to_radio]') == 'Heathrow' %}
<div style="display: flex;width: 50%; background-color:cadetblue;color: #000;">
  <p style="padding-left: 10px;">{{ webform_token('[webform_submission:values:heathrow_terminals_to]', webform_submission) }}</p>
</div>
{% endif %}

{% if webform_token('[webform_submission:values:airports_to_radio]') == 'Gatwick' %}
<div style="display: flex;width: 50%; background-color:cadetblue;color: #000;">
  <p style="padding-left: 10px;">{{ webform_token('[webform_submission:values:gatwick_terminals_to]', webform_submission) }}</p>
</div>
{% endif %}

This works to a point. Both sections of the twig template do not display, so i assume that the syntax is correct, but not using the correct comparison.

Any help to get the correct syntax for the {{ if }} statement would be great, or any links to information on the web would also be great.

Webform source code below.

airports:
  '#type': fieldset
  '#title': Airports
  airports_to_radios:
    '#type': radios_other
    '#title': Airports
    '#options':
      Heathrow: Heathrow
      Gatwick: Gatwick
      Stansted: Stansted
      Southend: Southend
      'London City': 'London City'
      Luton: Luton
    '#options_display': buttons
    '#other__option_label': Hotel
    '#other__title': Hotel
    '#other__placeholder': Hotel
  heathrow_terminals_to:
    '#type': radios
    '#title': 'Heathrow Terminals'
    '#options':
      'Terminal One': 'Terminal One'
      'Terminal Two': 'Terminal Two'
      'Terminal Three': 'Terminal Three'
      'Terminal Four': 'Terminal Four'
      'Terminal Five': 'Terminal Five'
    '#options_display': buttons
    '#states':
      visible:
        ':input[name="airports_to_radios[radios]"]':
          value: Heathrow
  gatwick_terminals_to:
    '#type': radios
    '#title': 'Gatwick Terminals'
    '#options':
      'South Terminal': 'South Terminal'
      'North Terminal': 'North Terminal'
    '#options_display': buttons
    '#states':
      visible:
        ':input[name="airports_to_radios[radios]"]':
          value: Gatwick
  customer_email:
    '#type': email
    '#title': 'Customer Email'
    '#default_value': test@localhost
3
  • Try to make the question more clear please. I understand that you need to send an e-mail with a custom template after the webform is submitted? You want to do that because the in-built webform UI does not provide you enough customization level, am I right?
    – user98716
    May 6, 2020 at 20:17
  • How to compare a Webform token with a given value in a twig 'if' statement? May 7, 2020 at 6:07
  • I think I finally understood what you need and your current problem. Check my answer, I think the problem is with the type of data. Your code would work for text fields, not for select/radios/checkboxes.
    – user98716
    May 7, 2020 at 13:19

1 Answer 1

0

Adding :raw to your webform submissions value has worked for me.

{% if webform_token('[webform_submission:values:airports_to_radio:raw]') == 'Heathrow' %}

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge that you have read and understand our privacy policy and code of conduct.

Not the answer you're looking for? Browse other questions tagged or ask your own question.