Formulierdata verwerken

Wanneer een webformulier wordt ingevuld, kun je de gegevens verwerken met een opvolgactie. In die opvolgactie kun je precies aangeven wat er met de verzamelde data moet gebeuren: een profiel bijwerken, een subprofiel aanmaken, of iets heel anders. Je kunt ook nieuwe acties triggeren, zoals het versturen van een mail of een webhook.

De opvolgactie begint met de trigger website-formulier ingevuld. Vanuit die trigger kun je alle mogelijkheden van opvolgacties gebruiken.

Smarty variabelen

In de opvolgactie zijn de ingevulde formuliervelden beschikbaar via de Smarty variabele {$event.answers}. Voor elk veld in het formulier is er een subvariabele beschikbaar, bijvoorbeeld:

{$event.answers.Voornaam}
{$event.answers.Achternaam}
{$event.answers.Woonplaats}
{$event.answers.Email}

Let op: de veldnamen zijn hoofdlettergevoelig en moeten precies overeenkomen met hoe je het veld in het formulier hebt genoemd. Ook andere formulierinformatie staat in {$event}. Zie de documentatie van de betreffende trigger voor alle beschikbare velden:

Subvariabelen

De Smarty-variabelen zijn objecten. Dit houdt in dat je in je opvolgactie niet alleen {$event.answers.VeldNaam} kunt gebruiken, maar dat je ook allerlei sub-properties van het veld kunt opvragen, mocht je dat nodig hebben.

  • {$event.answers.VeldNaam} - de door de gebruiker ingevoerde waarde als string.
  • {$event.answers.VeldNaam.type} - het type veld, bijvoorbeeld "input", "email" of "checkbox".
  • {$event.answers.VeldNaam.name} - de naam van het veld (dus in dit geval gewoon "VeldNaam").
  • {$event.answers.VeldNaam.text} - de ingevulde waarde als string/tekst (dit is een alias voor {$event.answers.VeldNaam})
  • {$event.answers.VeldNaam.value} - de waarde van het veld (dit is meestal een string, maar wijkt af voor selectievakjes en meerkeuzevelden)
  • {$event.answers.VeldNaam.label} - het voor de gebruiker zichtbare label van het veld
  • {$event.answers.VeldNaam.default} - de oorspronkelijke standaardwaarde van het veld
  • {$event.answers.VeldNaam.required} - was dit een verplicht veld? Boolean waarde.
  • {$event.answers.VeldNaam.checked} - voor selectievakjes: of het vakje was aangevinkt. Boolean waarde.
  • {$event.answers.VeldNaam.filled} - boolean waarde of het veld was ingevuld of leeg is gelaten.
  • {$event.answers.VeldNaam.options} - alleen voor meerkeuzevelden en selectievakjes: alle beschikbare opties als regulier array.
  • {$event.answers.VeldNaam.labels} - alleen voor meerkeuzevelden en selectievakjes: alle beschikbare opties als associatief array.
  • {$event.answers.VeldNaam.multiple} - alleen voor meerkeuzevelden: of meerdere opties geselecteerd mogen worden. Boolean.
  • {$event.answers.VeldNaam.selected} - alleen voor meerkeuzevelden en selectievakjes: alle geselecteerde opties als associatief array.
  • {$event.answers.VeldNaam.values} - alleen voor meerkeuzevelden: alle geselecteerde opties als regulier array.

Selectievakjes

Als je een selectievakje in je formulier opneemt, dan werken sommige variabelen wat anders. Een selectievakje kan immers alleen maar "aan" of "uit" staan, en kan niet door de gebruiker worden ingevuld. Wel kan een selectievakje een waarde hebben, die je met de editor kunt invoeren. Voor een selectievakje gelden de volgende regels:

  • {$event.answers.VeldNaam}: dit is de tekst "true" als het vakje is aangevinkt, en "false" als het niet is aangevinkt.
  • {$event.answers.VeldNaam.value}: dit is een boolean waarde (true/false) of het vakje is aangevinkt.
  • {$event.answers.VeldNaam.checked}: alias voor value.
  • {$event.answers.VeldNaam.default}: dit is een boolean waarde (true/false) of het vakje oorspronkelijk stond aangevinkt.
  • {$event.answers.VeldNaam.filled}: dit is altijd waar, omdat een vakje laten staan ook een antwoord is.
  • {$event.answers.VeldNaam.options}: array met 1 item, de enige beschikbare waarde.
  • {$event.answers.VeldNaam.labels}: array met 1 item, de enige beschikbare waarde gemapped naar het label.
  • {$event.answers.VeldNaam.selected}: leeg array als het niet is aangevinkt, of een array met de waarde gemapped naar het label.

Hoewel een selectievakje eigenlijk geen meerkeuzeveld is, zijn de options, labels en selected subvariabelen dus wel beschikbaar alsof het een meerkeuzeveld is met maar één waarde.

Om te kijken of een vakje is aangevinkt gebruik je checked, bijvoorbeeld in het blok Evalueer smarty met de vergelijking is waar:

{$event.answers.Voorwaarden.checked}

Meerkeuzevelden

Bij een meerkeuzeveld stel je in de formulieren-editor per optie een waarde en een label in. De waarde wordt naar Copernica gestuurd, het label is zichtbaar in het formulier. Afhankelijk van de weergave kan de gebruiker één optie kiezen, met keuzerondjes of een uitklapmenu, of meerdere opties, met selectievakjes. Voor een meerkeuzeveld gelden de volgende regels:

  • {$event.answers.VeldNaam}: dit zijn de waarden van de geselecteerde opties, gescheiden door komma's.
  • {$event.answers.VeldNaam.selected}: de geselecteerde opties, als waarde gemapped naar het label.
  • {$event.answers.VeldNaam.value}: alias voor selected.
  • {$event.answers.VeldNaam.values}: de waarden van de geselecteerde opties, als regulier array.
  • {$event.answers.VeldNaam.options}: alle beschikbare opties, als regulier array.
  • {$event.answers.VeldNaam.labels}: alle beschikbare opties, als waarde gemapped naar het label.
  • {$event.answers.VeldNaam.multiple}: of de gebruiker meerdere opties mocht selecteren.
  • {$event.answers.VeldNaam.filled}: of de gebruiker minstens één optie heeft geselecteerd.

Om te kijken of een specifieke optie is geselecteerd, vraag je die optie op bij de geselecteerde opties:

{if $event.answers.huisdier.selected.hond}...{/if}

Dit mag ook korter, zolang de waarde van de optie niet gelijk is aan een van de subvariabelen hierboven:

{if $event.answers.huisdier.hond}...{/if}

Verouderd: formulierdata via event.fields

Opvolgacties die eerder zijn gemaakt lezen de formuliervelden via het {$event.fields} object. Dat object blijft werken, dus je komt het tegen als je een bestaande opvolgactie bekijkt, maar voor nieuwe opvolgacties gebruik je {$event.answers}.

Formulierdata verwerken

Dankzij de flexibiliteit van de opvolgactie-editor bepaal je zelf hoe je de formulierdata verwerkt. Je kunt bijvoorbeeld:

  • Controleren of er al een profiel bestaat met het ingevoerde e-mailadres. Gebruik hiervoor het blok Zoek naar profiel/subprofiel en stel de voorwaarde in op:
    Email is gelijk aan {$event.answers.Email}
  • Bestaat het profiel? Werk het dan bij met het blok Velden en interesses bijwerken.
  • Nog geen profiel? Maak het aan met het blok Profiel aanmaken.
  • Of gebruik de data om bijvoorbeeld direct een e-mail te versturen.