Twig > Sanitizers


In de syntax van Twig wordt veel gebruik gemaakt van zogenaamde 'sanitizers', ook wel 'filters' genoemd. Deze commando's voeg je toe aan de weergave van een variabele of een string en hierdoor worden er bepaalde filters over de weer te geven waardes gelegd. Filters kunnen worden aangeroepen door '|' (pipe) achter de waarde te plaatsen.

Er zijn veel verschillende filters beschikbaar in nodum. Zo is het mogelijk om alle letters in een variabele of string om te zetten in hoofdletters. Hiervoor gebruik je de filter |upper:

{{ 'Help!'|upper }}
HELP!

Sommige filters hebben de mogelijkheid om extra parameters op te geven na het filter. Deze parameters kunnen meegegeven worden tussen reguliere haakjes ().

{{ uitvoer|table('table-striped')}} 

img
In bovenstaand voorbeeld wordt de parameter 'table-striped' opgegeven. Deze werkt in de filter |table als class voor de tabel die er gemaakt wordt.

Ook zijn er een klein aantal filters die je bij elkaar kunt gebruiken. Een voorbeeld hiervan is |pre.

{{ ''|microtime|pre }} 

Er zijn een aantal filters die in elk framework werken waar Twig wordt gebruikt. Een complete lijst met de filters die standaard aanwezig zijn in Twig is te vinden op de officiële website van Twig. Voorbeelden hiervan zijn |first (haalt de eerste waarde uit een array op), |date() (laat de datum van de dag zien met eventueel argumenten tussen de ()) of |replace (vervangt een bepaalde waarde uit de string voor een nieuw op te geven waarde).
Nodum beschikt over speciaal ontworpen filters (zie hieronder). Ieder filter kan worden aangeroepen op de bekende manier, met de 'pipe' (|) achter de string of variabele. Wanneer er argumenten en/of parameters kunnen worden meegegeven aan het filter staan deze tussen haakjes achter het filter met de bijbehorende typecasting.

Filter

append

Toelichting

Voegt een karakter x keer toe aan het einde van een string tot de opgegeven lengte is bereikt.

Voorbeeld

{{ 'Hoi'|append("=", 6) }}

Uitvoer

Hoi======

Filter

base64

Toelichting

Voert Base64-encoding uit, een manier om een waarde om te zetten naar binaire code.

Voorbeeld

{{ 'hallo'|base64 }}

Uitvoer

aGFsbG8=

Filter

base64_encode

Toelichting

Zie `|base64`

Voorbeeld

{{ 'hallo'|base64_encode }}

Uitvoer

aGFsbG8=

Filter

base64_decode

Toelichting

Decodeert een Base64-string naar de originele waarde.

Voorbeeld

{{ aGFsbG8=|base64_decode }}

Uitvoer

hallo

Filter

bool

Toelichting

PHP typecasting. Om een ander type data, anders dan boolean, om te zetten in boolean

Voorbeeld

{{ 'var_dump'|bool('0') }}
{{ 'var_dump' |bool ("") }}

Uitvoer

Return false
Return false

Filter

camelize()

Toelichting

Maakt van losse woorden hoofdletters, ook als er koppeltekens tussen woorden staan

Voorbeeld

{{ 'Dit_is_een_test, werkt het?'|camelize }}

Uitvoer

ditIsEenTestWerktHet

Filter

contains()

Toelichting

Filter om na te gaan of bepaalde waardes aanwezig zijn, indien dit zo is krijg je een 1 terug (true) is dit niet aanwezig dan krijg je niets terug.

Voorbeeld

{{ 'er was eens een man'|contains('was eens') }}

Uitvoer

1

Filter

datatable(_string_ classes)

Toelichting

Geeft een Boilerplate DataTable (met sorteren en filteren) weer.

Voorbeeld

{{ testdata|datatable }}

Uitvoer

Je krijgt zo een tabel die meteen sorteerbaar en filterbaar (incl. zoekfunctie) is.

Filter

emoji (use-images=false)

Toelichting

Toont emoji's. Voor de lijst met alle mogelijkheden http://www.emoji-cheat-sheet.com/

Voorbeeld

{{ ':innocent: :smile:'|emoji(true) }}

Uitvoer

Filter

ends_with()

Toelichting

Filter om na te gaan of bepaalde waardes aanwezig zijn, indien dit zo is krijg je een 1 terug (true) is dit niet aanwezig dan krijg je niets terug.

Voorbeeld

{{ 'dit is een test'|ends_with('een test') }}

Uitvoer

1

Filter

ends_with()

Toelichting

Filter om na te gaan of bepaalde waardes aanwezig zijn, indien dit zo is krijg je een 1 terug (true) is dit niet aanwezig dan krijg je niets terug.

Voorbeeld

{{ 'dit is een test'|ends_with('een tryout') }}

Uitvoer

Fill


fill(filler, length, Left/Right)

Een filter om waardes toe te voegen aan je element.

Filter

fill

Toelichting

Vult gegevens aan achter de opgegeven waarde.

Voorbeeld

{{ 'bla'|fill('.', 10, +1) }}

Uitvoer

bla.......

Filter

fill

Toelichting

Vult gegevens aan voor de opgegeven waarde.

Voorbeeld

{{ 'bla'|fill('.', 10, -1) }}

Uitvoer

.......bla

Filter

fill

Toelichting

Vult de gegevens aan voor de opgegeven waarde

Voorbeeld

{{ 'bla'|fill('.', 10, 'L')}}

Uitvoer

.......bla

Filter

fill

Toelichting

Vult de gegevens aan achter de opgegeven waarde

Voorbeeld

{{ 'bla'|fill('.', 10, 'R')}}

Uitvoer

bla.......

Filter

fill

Toelichting

Toont het aantal opgegeven tekens (in het voorbeeld 10).

Voorbeeld

{{'bla test 123 hoi hoi hoi'|fill('.', 10, +1)}}

Uitvoer

bla test 1

Filter

filterxss

Toelichting

Filtert input op mogelijke XSS-aanvallen, en geeft een lege string terug als er XSS is gevonden

Voorbeeld

{{ 'Hoi'|filterxss }}

Uitvoer

Hoi

Filter

finfo (_bool_ fileInput = false)

Toelichting

Verkrijg de extensie of het bestandstype (met fileInput = true) o.b.v. filename of documentinhoud (fileInput = true)

Voorbeeld

{{ 'test.docx'|finfo|pre }}

Uitvoer

Filename: {{ 'test.docx'|finfo|pre }}
<-- Geeft: docx -->

Filter

float

Toelichting

PHP typecasting. Om een ander type nummers, anders dan float om te zetten in float. (Float zijn nummers met decimalen).

Voorbeeld

{{ 4.5667777|float }}

Uitvoer

4.5667777

Float_format

(getal) | float_format( decimaalteken, duizendtalteken, aantal decimalen, afrondmethode )
Deze filter is zeer bruikbaarbaar bij float variabelen. Hiermee kan je numerieke waarden met duizendtallen tonen met een punt of komma. Bepalen op hoeveel decimalen je wilt afronden, en welke afrondingsmethode je wilt gebruiken. Deze filter heeft de volgende standaard waardes, die je kunt aanpassen naar je eigen wensen, zie ook de verschillende voorbeelden hieronder.

- Decimaalteken: standaard: , < komma >
- Duizendtalteken: standaard: < geen >
- Aantal decimalen: standaard: niet afronden
- Afrondmethode: standaard: "round" (normaal afronden), optioneel kan "ceil" (naar boven afronden) of "floor" (naar beneden afronden) worden opgegeven.
Filter

float_format

Toelichting

Voorbeeld

{% set val =(1/1.2)+2011721 %}
{{ val|float_format(",",".")|pre }}

Uitvoer

2.011.721,8333333

Filter

float_format(",",",",'ceil')

Toelichting

Ceil = afronden naar boven.

Voorbeeld

{% set val =(1/1.2)+2011721 %}
{{ val|float_format(",","",3,'ceil')|pre }}

Uitvoer

2011721,834

Filter

float_format

Toelichting

Waardes zonder decimalen of duizendtallen blijven zoals ze zijn.

Voorbeeld

{% set val =12 %}
{{ val|float_format(",",".")|pre }}

Uitvoer

12

Filter

float_format

Toelichting

ceil of floor hoeven niet te worden opgegeven, en het duizendteken kan in plaats van een punt ook een , zijn.

Voorbeeld

{% set val =(12/12)+0.1 %}
{{ val|float_format(",",".",4)|pre }}

Uitvoer

1,1000

Filter

float_format

Toelichting

float-format voorbeeld met een komma als duizendtalteken.

Voorbeeld

{% set val =(120*120) %}
{{ val|float_format(",",".")|pre }}

Uitvoer

144

Filter

float_format

Toelichting

Om getallen op 3 decimalen af te ronden

Voorbeeld

{% set val = 0 %}
{{ val|float_format(",",".",3)|pre }}

Uitvoer

0,000

Filter

humanize

Toelichting

Om van waardes een leesbare tekst te maken zonder koppeltekens.

Voorbeeld

{{'Dit-Is_Een_Test'|humanize }}

Uitvoer

Dit Is Een Test

Filter

hyphenize

Toelichting

Hiermee kan tekst worden omgezet in een waarde die bijvoorbeeld kan worden gebruikt als documentsnaam

Voorbeeld

{{ 'dit is een test!'|hyphenize }}

Uitvoer

dit-is-een-test

Filter

int

Toelichting

PHP typecasting. Handig bijvoorbeeld om een float om te zetten in integer. Integer zijn nummers zonder decimalen. Hij rond niet af, het toont alleen het getal voor de komma (gebruik geen komma maar een punt)

Voorbeeld

{{4.7|int }}

Uitvoer

4

Filter

json

Toelichting

Zet een JSON text-string om naar een object/array.

Filter

markdown

Toelichting

Maakt van de variabele of string een MarkDown-weergave (Alleen als in config > general - markdown_syntax op 1 staat). Voor als je in je code, elementen wilt maken met Markdown opmaak.

Voorbeeld

{{ '####hallo'|markdown }}

Uitvoer

hallo

Filter

md5

Toelichting

Genereert een MD5-hash.

Voorbeeld

{{ 'test'|md5 }}

Uitvoer

d41d8cd98f00b204e9800998ecf8427e

Filter

microtime

Toelichting

Verkrijg de timestamp tot duizendsten (3 decimalen).

Voorbeeld

{{ ""|microtime }}

Uitvoer

Dit geeft je de Unix tijd. Je kan hier nog `|int` achter plaatsen, zodat je geen decimalen meer krijgt.

Filter

object

Toelichting

PHP typecasting. Om een ander type data, anders dan een object, om te zetten in een object.

Filter

pad()

Toelichting

Werkt hetzelfde als |fill alleen kan je niet de kant (voor of achter) kiezen waar hij een bepaalde waarde toevoegd.

Voorbeeld

{{ 'data'|pad() }}

Uitvoer

----------

Filter

pre

Toelichting

Geeft een `pre` tag met een `print_r` van een array.

Voorbeeld

{{ param.postAll|pre }}

Uitvoer

Dit geeft de uitvoer terug zonder bewerking. Geeft alle waardes terug die gepost zijn met bijvoorbeeld een form, en het is erg handig bij foutopsporing in je code.

Filter

preg_match

Toelichting

Controleer o.b.v. reguliere expressies of een waarde voorkomt in een string (en verkrijg de matchende delen).

Voorbeeld

{{'van Laar'|preg_match("@a(.+)@")|pre }}

Uitvoer

([0]=> an Laar)

Filter

preg_replace

Toelichting

Vervang een waarde voor een andere waarde o.b.v. reguliere expressies.

Voorbeeld

{{ 'van Laar'|preg_replace("@a.@", "a") }}

Uitvoer

va Lar

Filter

prepend

Toelichting

Voegt een karakter X keer toe aan het begin van een string tot de opgegeven lengte is bereikt.

Voorbeeld

{{ 'Hoi'|prepend("=", 3) }}

Uitvoer

===Hoi

Filter

randomize()

Toelichting

Geeft de waardes terug in wisselende volgordes.

Voorbeeld

{{ ['a','b','c','d']|randomize(1) }}

Uitvoer

Array( [0] => a [1] => d [2] => b [3] => c )

Filter

repeat

Toelichting

Herhaalt een karakter het opgegeven aantal.

Voorbeeld

{{ 'Hoi'|append("=", 6) }}

Uitvoer

Hoi======

Filter

sha1

Toelichting

Native PHP

Voorbeeld

{{ 'hallo'|sha1 }}

Uitvoer

fd4cef7a4e607df2df99a4e8

Filter

shuffle

Toelichting

Met shuffle kan je waardes willekeurig tonen.

Voorbeeld

{{ ['a','b','c']|shuffle|pre }}

Uitvoer

Toont wisselende resultaten zoals ```a,c,b``` of ```b,c,a```.

Filter

starts_with()

Toelichting

Hiermee kan je nagaan of bepaalde waardes voorkomen, als dit het geval is krijg je een 1 (true)terug.

Voorbeeld

{{ 'dit is een test'|starts_with('dit is') }}

Uitvoer

1

Filter

starts_with()

Toelichting

Hiermee kan je nagaan of bepaalde waardes voorkomen, als dit het geval is krijg je een 1 (true)terug, als dit niet het geval is krijg je niets (leeg) terug.

Voorbeeld

{{ 'dit is een test'|starts_with('dit was') }}

Uitvoer

Filter

slug

Toelichting

Deze filter zet zinnen met bijv. spaties en leestekens om in een filename.

Voorbeeld

{% set title =' Een hele (mooie) post van "dingen" ' %}
{{ title }}

Uitvoer

Een hele (mooie) post van "dingen".

Filter

slug alternatief

Toelichting

Als je slug niet wilt gebruiken kan je ook een combinatie van filters gebruiken die hetzelfde opleveren. Je code is dan veel langer, de voorkeur gaat dan ook naar slug.

Voorbeeld

{{ title|lower|preg_replace("@[^a-z0-9]{1,}@"," ")|trim|preg_replace("@ @" , "-") }}

Uitvoer

Een hele (mooie) post van "dingen".
|trim om de extra spaties eruit te halen.
|lower om de hoofdletters eruit te halen.
|preg_replace om de tekens die vaker dan 1 keer voorkomen en geen a-z of 0-9 zijn te vervangen voor een spatie.

Filter

sort_by_key()

Toelichting

Voorbeeld

{{ [{name:"Wietse", age:28},{name:"Pepper", age:5},{name:"Nienke", age:29}]|sort_by_key('age') }}

Uitvoer

Array
(
[0] => Array
(
[name] => Pepper
[age] => 5
)

[1] => Array
(
[name] => Wietse
[age] => 28
)

[2] => Array
(
[name] => Nienke
[age] => 29
)
)

Met de update van versie 2.1.3 is het mogelijk om ook ASC en DESC te gebruiken bij de filter sort_by_key. Dit wordt dan het tweede argument.

{{ 'age' | sort_by_key('id', 'DESC') }}
Filter

str_replace

Toelichting

Vervang een waarde voor een andere waarde.

Voorbeeld

{{ 'José van Laar'|str_replace("a", "e") }}

Uitvoer

José ven Leer

Filter

string

Toelichting

PHP typecasting. Om een ander type data, anders dan een string, om te zetten in een string. Een string kan nummers, incl. decimalen en woorden bevatten.

Filter

strip_tags

Toelichting

Native PHP. Verwijdert SGML/XML tags uit tekst.

Voorbeeld

{{ some_html|striptags }}

Filter

stripslashes

Toelichting

Native PHP, om slashes / te verwijderen.

Voorbeeld

{{ param.getAll().userName|stripslashes }}

Uitvoer

naam zonder slashes

Filter

table(_string_classes)

Toelichting

Geeft een Boilerplate-table weer o.b.v. een input-array. Dit maakt van de data een tabel, zonder sorteer en filterfuncties, gebruik daarvoor de filter |datatable. Deze filter is ook samen te gebruiken met de boilerplate opmaak: ('table-striped') ('table-condensed')('table-bordered')

Voorbeeld

{{ 'data'|table('table-striped') }}

Filter

toarray

Toelichting

PHP typecasting, Er wordt gebruik gemaakt van 'to' voor de varnaam, omdat 'array' al in gebruik is.

Voorbeeld

{{ 'data'|toarray }}

Filter

tojson

Toelichting

Maakt van een object/array een JSON test-string.

Voorbeeld

{{ 'data'|json }}

Filter

translate
_t

Toelichting

Voert een vertaling uit (language.translate) over een string. Geef de variabele een hoofdletter en plaats het tussen aanhalingstekens.

Voorbeeld

{{'Vertaal'|t }}

Uitvoer

Nu komt dit woord als vertaallabel in de vertaallijst of je kan in de webversie op het woord klikken en direct vertalen.

Filter

time_diff

Toelichting

Met de filter time_diff kan je het verschil tussen 2 data laten berekenen of van een bepaalde datum tot nu.De argumenten die kunnen worden gebruikt zijn date en now. Now is een tijdstip wat steeds wijzigt wil je de datum van vandaag dan gebruik je date.

Voorbeeld

{{ 'now - 1 hour - 42 minutes - 2 day + 1 month'|date('Y-m-d H:i:s')|time_diff|print_r }}

Uitvoer

Array ( [text] => { t:timediffin } 28 { t:timediffdays } [obj] => DateInterval Object ( [y] => 0 [m] => 0 [d] => 28 [h] => 22 [i] => 18 [s] => 0 [weekday] => 0 [weekday_behavior] => 0 [first_last_day_of] => 0 [invert] => 1 [days] => 28 [special_type] => 0 [special_amount] => 0 [have_weekday_relative] => 0 [have_special_relative] => 0 ) )

Maak je gebruik van time_diff dan zijn er ook vertalingen bij die zijn te vinden op: Github

Filter

truncate

Toelichting

Met deze filter kan je een string na een opgegeven aantal afbreken.

Voorbeeld

{{ "Hello World!" | truncate(5) }}

Uitvoer

Hello

Filter

truncate

Toelichting

Een mogelijkheid is ook om gehele woorden zo ook te tonen. Als een laatste woord binnen het de grens van afbreken ligt dan toont hij toch het gehele woord. Dit doe je door een tweede parameter true toe te voegen.

Voorbeeld

{{ "Hello World!" | truncate(7, true) }}

Uitvoer

Hello World!

Filter

truncate

Toelichting

Je kan ook nog een derde parameter toevoegen. Om bijvoorbeeld tekens toe te voegen. In dit voorbeeld wordt na 7 letters wel in het woord afgebroken (door het gebruik van false) daarna komen nog 2 vraagtekens erbij.

Voorbeeld

{{ "Hello World!" | truncate(7, false, "??") }}

Uitvoer

Hello W??

Filter

url(string text)

Toelichting

Maakt URL-karakters (veilig, geoptimaliseerd). Om tekst om te zetten naar een utf-8 code, zodat je het bijvoorbeeld kan gebruiken als url link.

Voorbeeld

{{ 'Hoi hallo'|url }}

Uitvoer

Hoi-hallo

Filter

values

Toelichting

Met de filter |values kan je waardes tonen, in het onderstaande voorbeeld zal a,b,c worden getoond.

Voorbeeld

{{ {a:'a',b:'b',c:'c'}|values|pre }}

Uitvoer

Array
(
    [0] => a
    [1] => b
    [2] => c
)

Filter

wordwrap

Toelichting

Het voorbeeld toont nu per regel de tekst in telkens 10 tekens (letters cijfers en spaties).

Voorbeeld

{{ "Lorem ipsum dolor sit amet, consectetur adipiscing" | wordwrap(10) }}

Uitvoer

Lorem ipsu
m dolor si
t amet, co
nsectetur
adipiscing

Filter

wordwrap

Toelichting

Hier kan nog een toevoeging aan worden gedaan \n. In het volgende voorbeeld hebben we de letter zz toegevoegd.

Voorbeeld

{{ "Lorem ipsum dolor sit amet, consectetur adipiscing" | wordwrap(10, "zz\n") }}

Uitvoer

Lorem ipsuzz
m dolor sizz
t amet, cozz
nsectetur zz
adipiscing