Twigには、テンプレート内で直接使用できる便利な関数が、たくさんあります。
Twig関数リスト(List of Twig Functions)
Drupalコアには、Drupal特有のカスタム関数がいくつか追加されています。この関数は、TwigExtensionクラスで定義されています。
独自のカスタムTwig関数をカスタムモジュールで定義することもできます(しかしテーマには含まれません)。カスタムTwig関数の定義の例は、core / modules / system / tests / modules / twig_extension_test / src / TwigExtension / TestExtension.phpを参照してください。
#attach_library($library[ライブラリアセット])
テンプレートへライブラリアセットを読み込みます。
{{ attach_library('classy/node') }}
#create_attribute($attributes[属性])
Twigテンプレート内のcreate_attribute()関数を使用して、新しいAttribute(属性)オブジェクトを作成します 。このオブジェクトは、Twigテンプレートにある他のAttribute(属性)オブジェクトと同様に使用可能です。
8.3.xで導入されました
変更履歴を参照してください:https : //www.drupal.org/node/2818293
{% set my_attribute = create_attribute() %}
{%
set my_classes = [
'kittens',
'llamas',
'puppies',
]
%}
<div{{ my_attribute.addClass(my_classes).addAttribute('id', 'myUniqueId') }}>
{{ content }}
</div>
<div{{ create_attribute({'class': ['region', 'region--header']}) }}>
{{ content }}
</div>
#file_url($uri)
このヘルパー関数は、ルートからの相対パスを受け取り、そのファイルへの相対URIパスを作成します
{{ file_url(node.field_example_image.entity.uri.value) }}
#link ($text[テキスト], $url, $attributes[属性])
このヘルパー関数は、最初のパラメータでテキストを受け取り、2番目のパラメータでurlを受け取ります。
例:
{{ link(item.title, item.uri, { 'class':['foo', 'bar', 'baz']} ) }}
#path($name[ルート名], $parameters[パラメータ], $options[オプション])
ルート名とパラメータを指定して、相対URLパスを生成します。
{# Link to frontpage view. #}
<a href="{{ path('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
{# Link to user entity/profile page. #}
<a href="{{ path('entity.user.canonical', {'user': user.id}) }}">{{ 'View user profile'|t }}</a>
{# Link to node page. #}
<a href="{{ path('entity.node.canonical', {'node': node.id}) }}">{{ 'View node page'|t }}</a>
urlとpath関数は、\ Symfony \ Bridge \ Twig \ Extension \ RoutingExtensionにあるものとほぼ同じように定義されています。
#url($name[ルート名], $parameters[パラメータ], $options[オプション])
ルート名とパラメータを指定して、絶対URLパスを生成:
<a href="{{ url('view.frontpage.page_1') }}">{{ 'View all content'|t }}</a>
現在のURLへの絶対URLパスを生成:
<a href="{{ url('<current>') }}">{{ 'Reload'|t }}</a>
フロントページへの絶対URLパスを生成:
<a href="{{ url('<front>') }}">{{ 'Home'|t }}</a>