Skip to content
This repository was archived by the owner on Feb 17, 2022. It is now read-only.

7.x 2.x twig recipes

Andy Truong edited this page Jan 29, 2014 · 17 revisions

Do not cache Twig template

Twig compiled templates are cached by default. To auto refresh the compiled template, in settings.php, add this line:

defined('AT_DEBUG', TRUE);

Do not enable this on production sites.

Get available variables

{{ attribute(get_defined_vars(), 'context')|kpr }}

Render View with template:

{{ 'view_name'|drupalView({template: '@my_module/templates/views/view_name.html.twig'}) }}

To minimize your time on view template, just extends to default view template:

{% extends '@at_base/templates/views_view.html.twig' %}

{% block debug %}
  {{ attribute(get_defined_vars(), 'context')|dsm }}
{% endblock %}

Render entity with custom template

{% set o = { template: '@atest_base/templates/entity/user.html.twig' } %}
{{ 'user:1'|drupalEntity(o) }}

Cache

Cache function call

{# Simple function #}
{% set options = { cache_id: 'atestTwigCache:1' } %}
{{ 'atest_base_hello' | cache(options) }}

{# Static method #}
{% set options = { cache_id: 'atestTwigCache:1' } %}
{{ 'At_Base_Test_Class::helloStatic' | cache(options) }}

{# Callback with argument #}
{% set callback = { callback: 'atest_base_hello', arguments: ['Andy Truong'] } %}
{{ callback | cache(options) }}

Cache service call

{% set options = { cache_id: 'atestTwigCache:1' } %}
{{ 'atest_base.service_1:hello' | cache(options) }}

/at/twig

A page for you to debug Twig templates.

Define custom filtes

To provide your custom Twig filters, create @my_module/config/twig_filters.yml:

# @file: @my_module/config/twig_filters.yml
twig_filters:
  # Callback is just a function
  t: t
  # Callback is a static method
  drupalView: [\Drupal\at_base\Twig\Filters\Views, render]
  # Start the filter name with __ to let at_base know that 
  # our callback is a method on constructive class
  __at_config: [\Drupal\at_base\Twig\Filters\ATConfig, render]

Clone this wiki locally