Twigテンプレートで使用可能な関数

Twigテンプレートで使用可能な関数
この記事の目次

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>

この記事を書いた人 : Kentaro Inoue

ANNAI株式会社
マーケティングマネージャー
サービスの設計・企画、マーケティング、採用戦略の立案などを担当。普段は新潟で猫と一緒に、時々海外からリモートで働いています。好きなモジュールはRulesとFlagです。

関連コンテンツ