twig
Grundläggande mallsyntax
Sök…
Introduktion
Förklaring av grundläggande mallsyntaxkonstruktioner
Få åtkomst till variabler
I Twig-mallar kan variabler nås med hjälp av dubbel lockiga hängslen notation {{ variableName }}
.
Grundläggande exempel på hälsning användare
<!DOCTYPE html>
<html>
<body>
<span>Hello {{ name }}</span>
</body>
</html>
Åtkomst till arrayelement
Kvist som en parameter kan ta emot array. För att få åtkomst till ett specifikt element i arrayen kan du använda vanlig php array-accesskonsolnotation {{ array[key] }}
.
Föregående exempel modifierat för att använda array som en parameter
<!DOCTYPE html>
<html>
<body>
<span>Hello {{ user['name'] }}</span>
</body>
</html>
Åtkomst till objektegenskaper
Objekt kan också skickas som en parameter till mall. Notering 'Dot' (.) Används för att få åtkomst till specifika {{ object.propertyName }}
.
Samma exempel med objekt som en parameter
<!DOCTYPE html>
<html>
<body>
<span>Hello {{ user.name }}</span>
</body>
</html>
filter
Variabler kan modifieras med filter. För att tillämpa filter på variabeln följer variabelnamnet med pipe |
och filternamn:
{{ variable|filterName }}
Till exempel för att visa variabelt värde i versaler, använd konstruktion.
{{ variable|upper }}
Filter kan parametriseras. Filterparametrar skickas in inom parentes som en komma (,) separerad lista:
{{ variable|filterName(param1, param2, ...) }}
Round antal givna precision vi kan använda filter round
accepterar upp till 2 parametrar. Den första anger precision (standard: 0), den andra avrundningsmetoden (standard: vanligt).
För att runda nummer till 1 decimal med vanlig metod kan du använda {{ number|round(1, 'common') }}
eller {{ number|round(1) }}
som vanligt är standardmetod.
Filter kan också användas på inbäddade objekt och matrisvariabler:
{{ array['key'] | upper }} {{ object.text | upper }}
Filter kan också sammankopplas:
{% set array = "3,1,2"|split(',') %}
{{ array | sort | first }}
Lista över grundläggande filter finns här
Villkorade block
Delar av mallen kan visas på villkor. If
uttalande används för detta ändamål. Det liknar if
uttalande på programmeringsspråk. Innehållet i blocket körs / visas om ett uttryck utvärderas till true
.
{% if enabled == false %}
Disabled
{% endif %}
Inaktiverad visas endast när den är enabled
kommer att vara lika false
.
Flera grenar kan skapas med elseif
och else
.
{% if temperature < 10 %}
It's cold
{% elseif temperature < 18 %}
It's chilly
{% elseif temperature < 24 %}
It's warm
{% elseif temperature < 32 %}
It's hot
{% else %}
It's very hot
{% endif %}
För slinga
För slingor kan vara riktigt användbara i TWIG, vilket gör det möjligt att skapa datadynamiska webbsidor.
Säg att vi skapar ett enkelt antal siffror:
{% set array = "3,1,2" %}
Vi kan sedan iterera över matrisen och skriva ut vad vi vill. All data inom matrisblocket kommer att matas ut i förhållande till mängden data i matrisen. Detta exempel skulle skriva ut tre h1-element med array-data sammankopplade.
{% for current in array %}
<h1>This is number {{ current }} in the array </h1>
{% endear %}
Observera att {{ current }}
användes för att komma åt data och inte en version av array
Se detta fungerar: https://twigfiddle.com/mxwkea/2
Ett ytterligare exempel på detta kan vara att använda objekt. Till exempel, säg att vi har ett Entity-objekt med fältet "namn" tillsammans med dess relevanta getters och setters . Om ett antal av dessa enheter också lagras i arrayen kan de nås som alla andra objekt inom TWIG:
{% for currentObject in ArrayOfObjects %}
{{ currentObject.name }}
{% endfor %}
Se detta med JSON-data: https://twigfiddle.com/mxwkea
Ternary Operator (Shorthand If-Then-Annse) & Null-Coalescing Operator
Den ternära operatören ( ?:
:)
Stöd för den utökade ternära operatören lades till i Twig 1.12.0 .
{{ foo ? 'yes' : 'no' }}
utvärderar:
om
foo
echoyes
annars echono
{{ foo ?: 'no' }}
eller
{{ foo ? foo : 'no' }}
utvärderar:
om
foo
echo it, annars echono
{{ foo ? 'yes' }}
eller
{{ foo ? 'yes' : '' }}
utvärderar:
om
foo
echoyes
annars inte något
Operatören med icke-sammanförande ( ??:
{{ foo ?? 'no' }}
utvärderar:
Returnerar värdet på
foo
om det är definierat och inte noll ,no
annat
Whitepace-hantering
För att ta bort blanksteg (mellanslag, flikar, nylinjer ...) mellan HTML-taggar använder du spaceless
taggar:
{% spaceless %}
<div>
<span>foo bar </span>
</div>
{% endspaceless %}
{# produces output <div><strong>foo bar </strong></div> #}
Om du behöver ta bort whitespace på en taggnivå, använd whitespace control modifier dvs. bindestreck (-). Med det kan du trimma ledande och eller efterföljande mellanrum:
{% set value = 'foo bar' %}
<span> {{- value }} </span>
{# produces '<span>foo bar </span>' #}
<span> {{ value -}} </span>
{# produces '<span> foo bar</span>' #}
<span> {{- value -}} </span>
{# produces '<span>foo bar</span>' #}
<span {%- if true %} class="foo"{% endif %}>
{# produces '<span class="foo">' #}
<span {%- if false %} class="foo"{% endif %}>
{# produces '<span>' #}