Tutorial > Validatie


Nodum heeft verschillende validators om te gebruiken. Vooral bij het verwerken van een formulier kan het valideren van gegevens veel problemen voorkomen. Daarom beschikt nodum over een validatie-optie. Door middel van een set validators kun je het formulier controleren op geldige waarden en bij de gebruiker aangeven wat er mist in het formulier.

Voor het valideren van invoergegevens in een formulier zijn verschillende validators beschikbaar. Onderstaand vind je (nogmaals) de complete lijst:

Validator Alias Input Toelichting
minlength(n) Number Minimale lengte van de input
maxlength(n) Number Maximale lengte van de input
lenght(n) Number Lengte van de input
alpha Bevat a-z en A-Z één of meerdere keren
alphanum alphanumeric Bevat a-z en A-Z en 0-9 één of meerdere keren
num numeric Bevat a-z en A-Z één of meerdere keren
mail email Bevat een e-mailadres
regexp(t) regex, preg Text Voldoet aan de reguliere expressie die als Text wordt ingegeven
url Bevat een URL (http(s)://xxx.yyy.zzz/qqq?rrr=...)
upper uppercase Is volledig in hoofdletters
lower lowercase Is volledig in kleine letters
phone tel Bevat een telefoonnummer (lokaal en internationaal)
nonempty Is niet leeg
isempty Is leeg
ip Bevat een IP-adres

Met deze validators kan de validatie van een formulier op onderstaande wijze worden aangeroepen:

<h1>{{ 'Form Validation Sample'|t }}</h1>

{% set v = validate
            .requireToken
            .setRetention(3)
            .setId('TESTFRM')
            .setType('post')
            .field('Tx', [ 'minlength(10)','isempty' ], 'Geef een toelichting op van min. 10 karakters (of leeg).'|t )
            .field('Ds', 'mail', 'Vul e-mail adres in'|t )
%}

{% if v.complete and not v.error %}

    <p class="alert alert-groen">
        {{ 'Dank!'|t }}
    </p>

{% else %}

    {% if v.complete and v.error %}

        <div class="alert alert-rood">
            <b>{{ 'Los het volgende op:'|t }}</b>
            <ul>
                {% for error in v.getMessages %}
                    <li>{{ error }}</li>
                {% endfor %}
            </ul>
        </div>

    {% endif %}

    <form method="post" action="{{ index }}">

        {{ v.getTokenHtml|raw }}

        {% if 'Ds' in v.getErrorFields %}
             <span class="text-rood">{{ v.getMessages.Ds }}</span>
        {% endif %}

        <input type="text" name="Ds" class="form-control" placeholder="{{ 'Mailadres'|t }}" value="" />
        <br />

        {% if 'Tx' in v.getErrorFields %}
             <span class="text-rood">{{ v.getMessages.Tx }}</span>
        {% endif %}

        <textarea class="form-control" name="Tx" placeholder="{{ 'Toelichting'|t }}"></textarea>
        <br />

        <button class="btn btn-groen pull-right"><i class="fa fa-send"></i> {{ 'Versturen'|t }}</button>

    </form>

{% endif %}
reCAPTCHA toevoegen

Het is ook mogelijk om een reCAPTCHA toe te voegen aan de validatie van je formulier. Er dient hiervor eerst een site (met correct domein) geregistreerd te zijn op deze site.

Na registratie krijg je een siteKey en een secret welke opgegeven dienen te worden in de algemene configuratie van je project;

[recaptcha]
    sitekey = "xxxxxR8TAAAAAFShLx-ZvpTgxxxxxxjwMCkRpNQc"
    secret  = "xxxxxR8TAAAAAO6-XRe1SYlsxxxxxxxxXrW9sxxm"

!!!!Let op: bovenstaande codes zijn samples, vraag je eigen codes aan bij Google.

Om de Captcha te tonen in het formulier moet er binnen de

tag de volgende code gebruikt worden: {{ validate.getCaptcha()|raw }}

Wanneer het formulier is verzonden kun er gecontroleerd worden of de Captcha geldig is ingegeven met onderstaande code:

{% if validate.checkCaptcha %}
    Het is OK, ontvangen data:
    {{ param.post|pre }}
{% else %}
    De reCAPTCHA is niet OK
{% endif %}
Voorbeeld (handmatig)
{% if param.post %}

    {% if validate.checkCaptcha %}
        Het is OK, ontvangen data:
        {{ param.post|pre }}
    {% else %}
        De reCAPTCHA is niet OK
    {% endif %}

{% else %}

    <form method="post" action="{{ index }}">
            {{ validate.getCaptcha()|raw }}
            <input type="text" name="naam" />
            <br />
            <button type="submit">Verstuur</button>
    </form>

{% endif %}
Voorbeeld (met de form validator) - validate
{# 
    In je validator-definitie toevoegen: 
      veldnaam: captcha
      veldtype: captcha
    .field('captcha', 'captcha', 'Valideer de reCAPTCHA'|t )
#}

{# In je formulier #}

    <form method="post" action="{{ index }}">

            {{ validate.getCaptcha()|raw }}

            <button type="submit">Verstuur</button>
    </form>