6.4.Twig-ը Drupal-ի նոր կաղապարային շարժիչ է:
Եթե բացում եք Stable theme page.html.twig կաղապարի ֆայլը՝
/core/themes/stable/templates/layout/page.html.twig
Այնուհետև կտեսնեք, որ այն տարբերվում է Drupal 7 page.tpl.php ձևանմուշից՝ նախ ընդլայնմամբ և երկրորդ՝ գանգուր փակագծերի առատությամբ {}։ Այս ամենը պայմանավորված է նրանով, որ Drupal-ն օգտագործում է Twig կաղապարի շարժիչը:
<main role="main">
<a id="main-content" tabindex="-1"></a>{# link is in html.html.twig #}
<div class="layout-content">
{{ page.content }}
</div>{# /.layout-content #}
{% if page.sidebar_first %}
<aside class="layout-sidebar-first" role="complementary">
{{ page.sidebar_first }}
</aside>
{% endif %}
{% if page.sidebar_second %}
<aside class="layout-sidebar-second" role="complementary">
{{ page.sidebar_second }}
</aside>
{% endif %}
</main>
PHP-ն չի կարող օգտագործվել twig կաղապարում, ուստի անհրաժեշտ է օգտագործել միայն Twig գործիքները, և դրանք բավական են կայքի ոճավորման համար։
Եկեք պարզենք, թե ինչպես աշխատել Twig-ի հետ:
Փոփոխականներ Twig-ում
Եթե PHP-ում մենք օգտագործում ենք դոլարի նշանը փոփոխականների համար, ապա twig-ում մենք օգտագործում ենք գանգուր փակագծեր.
{{variable}}
Այսպիսով, մենք գրում ենք փոփոխականները երկու բացվող փակագծեր, բացատ, փոփոխականի անվանում, բացատ, երկու փակող փակագծեր։ Փոփոխական դուրս գալու համար պետք չէ twig փոփոխականի դիմաց ավելացնել տպման ֆունկցիան, մենք ընդհանրապես չենք օգտագործում PHP twig կաղապարներում; փոփոխական դուրս բերելու համար պարզապես անհրաժեշտ է այն նշել կրկնակի գանգուր փակագծերում:
Հարմար է նաև աշխատել փոփոխական օբյեկտների և զանգվածների հետ, եթե ավելի վաղ անհրաժեշտ էր իմանալ, որ $ հանգույցը օբյեկտ է, իսկ $ form-ը զանգված է, այժմ ամեն ինչ ավելի պարզ է, մենք կետի միջոցով անդրադառնում ենք փոփոխականների հատկություններին.
{{node.id}}
Մենք հեշտությամբ կարող ենք փոփոխականներ ստեղծել.
{% set foo="bar" %}
Hi, here's my variable: {{ foo }}
Ուշադրություն դարձրեք այն շարահյուսությանը, որ երբ մենք փոփոխական ենք դնում, մենք օգտագործում ենք տոկոսային նշանի փակագիծ, իսկ երբ ցուցադրում ենք փոփոխական, օգտագործում ենք կրկնակի փակագծեր:
Մենք կարող ենք նշել ոչ միայն տողեր, այլև զանգվածներ.
{%
set foo_array = [
'foo',
'bar',
]
%}
Twig զիչներ
Չնայած twig-ը լիարժեք ծրագրավորման լեզու չէ, այն ունի տվյալների հետ աշխատելու գործիքների հավաքածու։ Հավանաբար, նման ամենակարևոր գործիքը ֆիլտրերն են: Զտիչները նշված են խողովակի |
{{ variable|filter }}
Զտիչները թույլ են տալիս փոխել փոփոխականների ելքը, օրինակ՝
{{node.title | length}} - տպում է տողի երկարությանը
{{node.title | uppercase}} - ցուցադրում է տողը մեծատառով
{{node.title | lowercase}} - թողարկել տողը փոքրատառով
Twig ֆիլտրերի ամբողջական ցանկի համար տե՛ս Twig-ի պաշտոնական փաստաթղթերը http://twig.sensiolabs.org/doc/filters/index.html
Drupal Twig զտիչներ
Drupal-ը նաև ավելացնում է իր զտիչները Twig-ին, օրինակ՝ գծերի հոսքերի զտիչները: Եթե նախկինում մենք օգտագործում էինք t () ֆունկցիան, որը ներդրվում էր PHP-ում, իսկ այժմ չենք կարող օգտագործել PHP կոդը Twig-ում, ապա մեզ անհրաժեշտ է գործիք, որը փոխարինում է t () ֆունկցիան։
Գտեք օրինակներ ըստ
- t
- passthrough
- placeholder
- drupal_escape
- safe_json
- without
- clean_class
- clean_id
Գծի սնումը ճյուղերի օրինակով
Twig-ն օգտագործում է տողեր տարբեր լեզուների համար։ Տող թարգմանելու համար անհրաժեշտ է օգտագործել {% trans%} պիտակը: Ուշադրություն դարձրեք, թե ինչպես են գրված կառավարման կառույցները: Փոփոխականներից տարբերվելու համար նրանք օգտագործում են տոկոս նշանը:
{% trans %} Hello world {% endtrans %}
Մենք կարող ենք նաև փոփոխականներ փոխանցել տողերին թարգմանության համար.
{% trans %} Hello {{ name }} {% endtrans %}
Մենք կարող ենք նաև փոփոխել փոփոխականները ֆիլտրերի միջոցով՝ նախքան թարգմանչական տողերում ցուցադրելը
{% set name = name|capitalize %}
{% trans %}
Hello {{ name }}!
{% endtrans %}
Մեկնաբանություններ Twig ում
{# Comment here #}
If պայմանի օպերատոր
Չնայած մենք չունենք PHP-ի առանձնահատկությունների մեծ մասը twig-ում, մենք ունենք մի շարք կառուցվածքներ զանգվածների և փոփոխականների հետ աշխատելու համար: Օրինակ, մենք կարող ենք ստուգել, արդյոք փոփոխական գոյություն ունի, նախքան այս փոփոխականը ցուցադրելը:
{% if site_slogan %}
<div class="site-slogan">{{ site_slogan }}</div>
{% endif %}
Twig ցիկլ
Շատ հաճախ կաղապարներում անհրաժեշտ է կրկնել զանգվածի վրա և այն տարր առ տարր դուրս բերել: Դա անելու համար Twig-ում մենք օգտագործում ենք for loop (նման է foreach-ին PHP-ում).
{% for item in items %}
{{ item.content }}
{% endfor %}
Մենք կարող ենք նաև օգտագործել for հանգույցը, ինչպես սովորական for հանգույցը PHP-ի համար, բայց միայն այլ ձևով.
{% for i in range(0, 3) %}
{{ i }},
{% endfor %}
Variable | Description |
items.index | Current item number starting at 1 |
items.index0 | Current item number starting at 0 |
items.revindex | The number of the current element from the end, starting from 1 |
items.revindex0 | The number of the current element from the end, starting at 0 |
items.first | TRUE if this is the first item |
items.last | TRUE if this is the last item |
items.length | Item array length |
items.parent | Parent context |
Մենք կարող ենք նաև օգտագործել for else կառուցումը.
<ul>
{% for user in users %}
<li>{{ user.username|e }}</li>
{% else %}
<li><em>no user found</em></li>
{% endfor %}
</ul>