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 echo yes annars echo no


{{ foo ?: 'no' }}

eller

{{ foo ? foo : 'no' }}

utvärderar:

om foo echo it, annars echo no


{{ foo ? 'yes' }}

eller

{{ foo ? 'yes' : '' }}

utvärderar:

om foo echo yes 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>' #}


Modified text is an extract of the original Stack Overflow Documentation
Licensierat under CC BY-SA 3.0
Inte anslutet till Stack Overflow