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')}}
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.
append
Voegt een karakter x keer toe aan het einde van een string tot de opgegeven lengte is bereikt.
{{ 'Hoi'|append("=", 6) }}
Hoi======
base64
Voert Base64-encoding uit, een manier om een waarde om te zetten naar binaire code.
{{ 'hallo'|base64 }}
aGFsbG8=
base64_encode
Zie `|base64`
{{ 'hallo'|base64_encode }}
aGFsbG8=
base64_decode
Decodeert een Base64-string naar de originele waarde.
{{ aGFsbG8=|base64_decode }}
hallo
bool
PHP typecasting. Om een ander type data, anders dan boolean, om te zetten in boolean
{{ 'var_dump'|bool('0') }}
{{ 'var_dump' |bool ("") }}
Return false
Return false
camelize()
Maakt van losse woorden hoofdletters, ook als er koppeltekens tussen woorden staan
{{ 'Dit_is_een_test, werkt het?'|camelize }}
ditIsEenTestWerktHet
contains()
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.
{{ 'er was eens een man'|contains('was eens') }}
1
datatable(_string_ classes)
Geeft een Boilerplate DataTable (met sorteren en filteren) weer.
{{ testdata|datatable }}
Je krijgt zo een tabel die meteen sorteerbaar en filterbaar (incl. zoekfunctie) is.
emoji (use-images=false)
Toont emoji's. Voor de lijst met alle mogelijkheden http://www.emoji-cheat-sheet.com/
{{ ':innocent: :smile:'|emoji(true) }}
ends_with()
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.
{{ 'dit is een test'|ends_with('een test') }}
1
ends_with()
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.
{{ 'dit is een test'|ends_with('een tryout') }}
Fill
fill(filler, length, Left/Right)
Een filter om waardes toe te voegen aan je element.
fill
Vult gegevens aan achter de opgegeven waarde.
{{ 'bla'|fill('.', 10, +1) }}
bla.......
fill
Vult gegevens aan voor de opgegeven waarde.
{{ 'bla'|fill('.', 10, -1) }}
.......bla
fill
Vult de gegevens aan voor de opgegeven waarde
{{ 'bla'|fill('.', 10, 'L')}}
.......bla
fill
Vult de gegevens aan achter de opgegeven waarde
{{ 'bla'|fill('.', 10, 'R')}}
bla.......
fill
Toont het aantal opgegeven tekens (in het voorbeeld 10).
{{'bla test 123 hoi hoi hoi'|fill('.', 10, +1)}}
bla test 1
filterxss
Filtert input op mogelijke XSS-aanvallen, en geeft een lege string terug als er XSS is gevonden
{{ 'Hoi'|filterxss }}
Hoi
finfo (_bool_ fileInput = false)
Verkrijg de extensie of het bestandstype (met fileInput = true) o.b.v. filename of documentinhoud (fileInput = true)
{{ 'test.docx'|finfo|pre }}
Filename: {{ 'test.docx'|finfo|pre }}
<-- Geeft: docx -->
float
PHP typecasting. Om een ander type nummers, anders dan float om te zetten in float. (Float zijn nummers met decimalen).
{{ 4.5667777|float }}
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.
float_format
{% set val =(1/1.2)+2011721 %}
{{ val|float_format(",",".")|pre }}
2.011.721,8333333
float_format(",",",",'ceil')
Ceil = afronden naar boven.
{% set val =(1/1.2)+2011721 %}
{{ val|float_format(",","",3,'ceil')|pre }}
2011721,834
float_format
Waardes zonder decimalen of duizendtallen blijven zoals ze zijn.
{% set val =12 %}
{{ val|float_format(",",".")|pre }}
12
float_format
ceil of floor hoeven niet te worden opgegeven, en het duizendteken kan in plaats van een punt ook een , zijn.
{% set val =(12/12)+0.1 %}
{{ val|float_format(",",".",4)|pre }}
1,1000
float_format
float-format voorbeeld met een komma als duizendtalteken.
{% set val =(120*120) %}
{{ val|float_format(",",".")|pre }}
144
float_format
Om getallen op 3 decimalen af te ronden
{% set val = 0 %}
{{ val|float_format(",",".",3)|pre }}
0,000
humanize
Om van waardes een leesbare tekst te maken zonder koppeltekens.
{{'Dit-Is_Een_Test'|humanize }}
Dit Is Een Test
hyphenize
Hiermee kan tekst worden omgezet in een waarde die bijvoorbeeld kan worden gebruikt als documentsnaam
{{ 'dit is een test!'|hyphenize }}
dit-is-een-test
int
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)
{{4.7|int }}
4
json
Zet een JSON text-string om naar een object/array.
markdown
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.
{{ '####hallo'|markdown }}
hallo
md5
Genereert een MD5-hash.
{{ 'test'|md5 }}
d41d8cd98f00b204e9800998ecf8427e
microtime
Verkrijg de timestamp tot duizendsten (3 decimalen).
{{ ""|microtime }}
Dit geeft je de Unix tijd. Je kan hier nog `|int` achter plaatsen, zodat je geen decimalen meer krijgt.
object
PHP typecasting. Om een ander type data, anders dan een object, om te zetten in een object.
pad()
Werkt hetzelfde als |fill alleen kan je niet de kant (voor of achter) kiezen waar hij een bepaalde waarde toevoegd.
{{ 'data'|pad() }}
----------
pre
Geeft een `pre` tag met een `print_r` van een array.
{{ param.postAll|pre }}
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.
preg_match
Controleer o.b.v. reguliere expressies of een waarde voorkomt in een string (en verkrijg de matchende delen).
{{'van Laar'|preg_match("@a(.+)@")|pre }}
([0]=> an Laar)
preg_replace
Vervang een waarde voor een andere waarde o.b.v. reguliere expressies.
{{ 'van Laar'|preg_replace("@a.@", "a") }}
va Lar
prepend
Voegt een karakter X keer toe aan het begin van een string tot de opgegeven lengte is bereikt.
{{ 'Hoi'|prepend("=", 3) }}
===Hoi
randomize()
Geeft de waardes terug in wisselende volgordes.
{{ ['a','b','c','d']|randomize(1) }}
Array( [0] => a [1] => d [2] => b [3] => c )
repeat
Herhaalt een karakter het opgegeven aantal.
{{ 'Hoi'|append("=", 6) }}
Hoi======
sha1
Native PHP
{{ 'hallo'|sha1 }}
fd4cef7a4e607df2df99a4e8
shuffle
Met shuffle kan je waardes willekeurig tonen.
{{ ['a','b','c']|shuffle|pre }}
Toont wisselende resultaten zoals ```a,c,b``` of ```b,c,a```.
starts_with()
Hiermee kan je nagaan of bepaalde waardes voorkomen, als dit het geval is krijg je een 1 (true)terug.
{{ 'dit is een test'|starts_with('dit is') }}
1
starts_with()
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.
{{ 'dit is een test'|starts_with('dit was') }}
slug
Deze filter zet zinnen met bijv. spaties en leestekens om in een filename.
{% set title =' Een hele (mooie) post van "dingen" ' %}
{{ title }}
Een hele (mooie) post van "dingen".
slug alternatief
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.
{{ title|lower|preg_replace("@[^a-z0-9]{1,}@"," ")|trim|preg_replace("@ @" , "-") }}
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.
sort_by_key()
{{ [{name:"Wietse", age:28},{name:"Pepper", age:5},{name:"Nienke", age:29}]|sort_by_key('age') }}
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') }}
str_replace
Vervang een waarde voor een andere waarde.
{{ 'José van Laar'|str_replace("a", "e") }}
José ven Leer
string
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.
strip_tags
Native PHP. Verwijdert SGML/XML tags uit tekst.
{{ some_html|striptags }}
stripslashes
Native PHP, om slashes / te verwijderen.
{{ param.getAll().userName|stripslashes }}
naam zonder slashes
table(_string_classes)
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')
{{ 'data'|table('table-striped') }}
toarray
PHP typecasting, Er wordt gebruik gemaakt van 'to' voor de varnaam, omdat 'array' al in gebruik is.
{{ 'data'|toarray }}
tojson
Maakt van een object/array een JSON test-string.
{{ 'data'|json }}
translate
_t
Voert een vertaling uit (language.translate) over een string. Geef de variabele een hoofdletter en plaats het tussen aanhalingstekens.
{{'Vertaal'|t }}
Nu komt dit woord als vertaallabel in de vertaallijst of je kan in de webversie op het woord klikken en direct vertalen.
time_diff
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.
{{ 'now - 1 hour - 42 minutes - 2 day + 1 month'|date('Y-m-d H:i:s')|time_diff|print_r }}
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
truncate
Met deze filter kan je een string na een opgegeven aantal afbreken.
{{ "Hello World!" | truncate(5) }}
Hello
truncate
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.
{{ "Hello World!" | truncate(7, true) }}
Hello World!
truncate
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.
{{ "Hello World!" | truncate(7, false, "??") }}
Hello W??
url(string text)
Maakt URL-karakters (veilig, geoptimaliseerd). Om tekst om te zetten naar een utf-8 code, zodat je het bijvoorbeeld kan gebruiken als url link.
{{ 'Hoi hallo'|url }}
Hoi-hallo
values
Met de filter |values kan je waardes tonen, in het onderstaande voorbeeld zal a,b,c worden getoond.
{{ {a:'a',b:'b',c:'c'}|values|pre }}
Array ( [0] => a [1] => b [2] => c )
wordwrap
Het voorbeeld toont nu per regel de tekst in telkens 10 tekens (letters cijfers en spaties).
{{ "Lorem ipsum dolor sit amet, consectetur adipiscing" | wordwrap(10) }}
Lorem ipsu
m dolor si
t amet, co
nsectetur
adipiscing
wordwrap
Hier kan nog een toevoeging aan worden gedaan \n. In het volgende voorbeeld hebben we de letter zz toegevoegd.
{{ "Lorem ipsum dolor sit amet, consectetur adipiscing" | wordwrap(10, "zz\n") }}
Lorem ipsuzz
m dolor sizz
t amet, cozz
nsectetur zz
adipiscing