Twig > Commando's
Twig kent verschillende commando's die de kracht van de syntax herbergen. Door binnen de accolades te werken met do
, set
en for
kun je de meeste commando's binnen nodum uitvoeren.
Do
'Do' zorgt ervoor dat code achter dit commando wordt uitgevoerd, zonder dat er verder iets wordt weergegeven. Een simpel voorbeeld is:
{% do 1 + 1 %}
Deze code zal geen weergave in de browser opleveren. 'Do' is sterk in het starten van achtergrondprocessen. Zo kan er een sessievariabele worden toegewezen middels een 'do'-commando:
{% do session.set('username', 'Kevin Koobs') %}
Wanneer je nu de sessievariabele 'username' aanroept zoals beschreven onder 'Variabelen' zal 'Kevin Koobs' worden weergegeven in de browser.
Set
Met 'set' kun je variabelen aanmaken die je in de rest van je pagina kunt aanroepen. Bijvoorbeeld:
{% set foo = 'bar' %}
Zoals onder 'Variabelen' beschreven, zal dit 'bar' weergeven als de variabele wordt aangeroepen. Als je tegelijkertijd meerdere variabelen wilt aanmaken kun je komma's gebruiken om de verschillende variabelen te onderscheiden:
{% set foo, bar = 'bar', 'foo' %}
{# staat gelijk aan #}
{% set foo = 'bar' %}
{% set bar = 'foo' %}
Twig kan eveneens omgaan met arrays en objecten. Hoe je hier het meest uit kunt halen lees je in de sectie 'For'. Zelf arrays aanmaken kan uiteraard ook.
{% set testArray = [1, 2] %}
{% set nieuweTest = {'foo' : 'bar', 'tijd' : '16:56', 'datum' : '03-03-2016'} %}
Wanneer je een array aanroept met de voor nodum gemaakte sanitizer 'pre' zal deze volledig worden weergegeven in de browser.
{{ nieuweTest|pre }}
<pre>
Array
(
[foo] => bar
[tijd] => 16:56
[datum] => 03-03-2016
)
</pre>
For
Wanneer je een 'for'-loop start met (bijvoorbeeld) een array kun je voor iedere waarde in de array de code in de loop laten uitvoeren. Als het einde van de array bereikt is zal de loop vanzelf stoppen. Een uiterst krachtig commando om veel repeterende code te kunnen schrappen. Meer informatie omtrent array's en de 'for'-loop vind je in de PHP-manual (for-loop en array's) en op de site van W3C (for-loop en array's ).
Laten we de array 'nieuweTest' van hierboven als voorbeeld nemen.
{% for value in nieuweTest %}
{# 'value' is nu iedere keer opnieuw de waarde van de value in de array #}
<div class="col-xs-6">{{ value }}</div>
{% endfor %}
<!-- Bovenstaande zal het volgende weergeven in de browser: -->
<div class="col-xs-6">bar</div>
<div class="col-xs-6">16:56</div>
<div class="col-xs-6">03-03-2016</div>
Als we ook de zogenaamde 'key' willen weten uit de array kan dat op de volgende manier:
{% for key, value in newArray %}
<div class="col-xs-6">
Key: {{ key }}, value: {{ value }}
</div>
{% endfor %}
<!-- Bovenstaande zal weergeven: -->
<div class="col-xs-6">Key: 0, value: 1</div>
<div class="col-xs-6">Key: 1, value: 2</div>
Behalve een array om doorheen te loopen kunnen we de 'for'-loop ook instrueren om honderd keer 'hoi' weer te geven in de browser. Dit doen we door een 'range' op te geven waartussen de code moet worden uitgevoerd.
{% for i in 0..100 %}
<p>Hoi</p><br />
{% endfor %}
In gewoon Nederlands staat hier: "Zolang i
zich tussen 0 en 100 bevindt, geef <p>Hoi</p><br />
weer in de browser en tel 1 bij i
op."
Include
Met het include
-commando kun je andere pagina's in je huidige pagina laden. Wanneer je in dezelfde map twee bestanden hebt staan (bijvoorbeeld 'main.twig' en 'login.twig') kun je in 'main.twig' de loginpagina als volgt inladen:
{% include 'login.twig' %}
Uiteraard kun je ook gebruik maken van bestanden in andere mappen. Neem bijvoorbeeld het bestand 'menukaart.twig' in de map 'restaurant'. Het include
-commando zal er dan als volgt uitzien:
{% include 'restaurants/menukaart.twig' %}
Wanneer je het idee achter do
, set
en for
onder de knie hebt heb je de basis van nodum begrepen en kun je verder met de meer geavanceerde technologie achter nodum. Door middel van objecten, sanitizers en debuggers kun je de ware kracht van nodum benutten!