Formulier met dynamische opties op basis van het huidige jaar

In dit voorbeeld maken we een deel-formulier bestaande uit 1 stap, waarbij de opties van een “keuzelijst” component dynamisch worden aangepast aan de hand de waarde van een variabele. In dit voorbeeld current_year.

Deze functionaliteit kan op eenzelfde manier worden gebruikt voor de “radio” component en de “selectievakjes” component.

Formulier maken

  1. Maak een formulier aan met de volgende gegevens:

    • Naam: Keuzelijst jaar demo

  2. Klik op het tabblad Stappen en velden.

  3. Klik aan de linkerkant op Stap toevoegen en selecteer Maak een nieuwe formulierdefinitie.

  4. Onder de sectie (Herbruikbare) stapgegevens vul het volgende in:

    • Naam: Aanvraag gegevens

  5. Scroll naar de sectie Velden.

  6. Sleep een Keuzelijst component op het witte vlak, vul de volgende gegevens in en druk daarna op Opslaan:

    • Label: Jaar aanvraag

    • Beschrijving: Voor welk jaar vraagt u de subsidie aan?

    • Keuzeopties: Variabele

    • Opties-expressie:

    {
      "merge": [
        { "-": [{ "var": "current_year" }, 3] },
        { "-": [{ "var": "current_year" }, 2] },
        { "-": [{ "var": "current_year" }, 1] },
        { "var": "current_year" },
        { "+": [{ "var": "current_year" }, 1] }
      ]
    }
    
  7. Klik onderaan op Opslaan om het formulier volledig op te slaan.

U kunt nu het formulier bekijken.

Note

Deze expressie gebruik de JsonLogic merge operatie om een lijst te maken van 5 getallen. De var operatie wordt gebruikt om de waarde van de door open formulieren voorgedefinieerde, vaste variabele current_year op te vragen en die vervolgens te bewerken met + en -.

Stel we leven in het jaar 2023, dan zal het resultaat de lijst [2020, 2021, 2022, 2023, 2024] zijn. Deze getallen zullen dan zowel voor de waarden als de labels gebruikt worden.

Note

De waarde van current_year is een int (geheel getal). In Sjablonen worden getallen standaard met een . scheidingsteken na de duizendtallen getoond. Wat voor een jaartal natuurlijk niet wenselijk is. Door gebruik te maken van de stringformat sjabloonfilter kunt u dit voorkomen: {{ current_year | stringformat:”d” }}