# Cheat sheet
## Drupal View
Render a view. See [Twig Tweak and Views](./views.md) page for more information.
### Accepted parameters
$name
- String - Required - The name of the view to embed.
$display_id
- String - Optional - The display id to embed. Default is
default.
$...
- Mixed - Optional - Any additional parameters will be passed as arguments.
```twig
{{ drupal_view('who_s_new', 'block_1') }}
```
Specify additional parameters which map to contextual filters you have
configured in your view:
```twig
{{ drupal_view('who_s_new', 'block_1', arg_1, arg_2, arg_3) }}
```
## Drupal View Result
Get the result of a view.
```twig
{{ drupal_view_result('who_s_new', 'block_1') }}
```
## Drupal Block
Used to render a block.
In order to figure out the plugin IDs list them using block plugin manager.
With Drush, it can be done like follows:
```shell
drush ev "print_r(array_keys(\Drupal::service('plugin.manager.block')->getDefinitions()));"
```
```twig
{# Print block using default configuration. #}
{{ drupal_block('system_branding_block') }}
{# Print block using custom configuration. #}
{{ drupal_block('system_branding_block', {label: 'Branding', use_site_name: false, id}) }}
{# Bypass block.html.twig theming. #}
{{ drupal_block('system_branding_block', wrapper=false) }}
```
See [rendering blocks with Twig Tweak](blocks.md#block-plugin) for more details
and examples.
## Drupal Region
Used to render contents of a region from the default or any other specified
theme.
```twig
{# Print 'sidebar_first' region of the default site theme. #}
{{ drupal_region('sidebar_first') }}
{# Print 'sidebar_first' region of Bartik theme. #}
{{ drupal_region('sidebar_first', 'bartik') }}
```
## Drupal Entity
Used to render an entity. Returns `NULL` if the entity doesn't exist.
```twig
{# Print a content block which ID is 1. #}
{{ drupal_entity('block_content', 1) }}
{# Print a node's teaser. #}
{{ drupal_entity('node', 123, 'teaser') }}
{# Print Branding block which was previously disabled on #}
{# admin/structure/block page. #}
{{ drupal_entity('block', 'bartik_branding', check_access=false) }}
```
## Drupal Entity Form
Gets the built and processed entity form for the given entity type.
```twig
{# Print edit form for node 1. #}
{{ drupal_entity_form('node', 1) }}
{# Print add form for 'article' content type. #}
{{ drupal_entity_form('node', values={type: 'article'}) }}
{# Print user register form. #}
{{ drupal_entity_form('user', NULL, 'register', check_access=false) }}
```
## Drupal Field
Returns the render array for a single entity field, or `NULL` if the field value
doesn't exist.
```twig
{{ drupal_field('field_image', 'node', 1) }}
{{ drupal_field('field_image', 'node', 1, 'teaser') }}
{{ drupal_field('field_image', 'node', 1, {type: 'image_url', settings: {image_style: 'large'}}) }}
```
## Drupal Menu
Returns a render array for the specified menu.
```twig
{# Print the top level of 'main' menu. #}
{{ drupal_menu('main') }}
{# Expand all menu links. #}
{{ drupal_menu('main', expand=true) }}
```
## Drupal Form
Returns a render array to represent the form.
```twig
{{ drupal_form('Drupal\\search\\Form\\SearchBlockForm') }}
```
## Drupal Image
Used to build the image.
```twig
{# Render image specified by file ID. #}
{{ drupal_image(123) }}
{# Render image specified by file UUID. #}
{{ drupal_image('9bb27144-e6b2-4847-bd24-adcc59613ec0') }}
{# Render image specified by file URI. #}
{{ drupal_image('public://ocean.jpg') }}
{# Render image using 'thumbnail' image style and custom attributes. #}
{{ drupal_image('public://ocean.jpg', 'thumbnail', {alt: 'The alternative text'|t, title: 'The title text'|t}) }}
{# Render responsive image (using a named argument). #}
{{ drupal_image('public://ocean.jpg', 'wide', responsive=true) }}
```
## Drupal Token
Replaces a given token with appropriate value.
```twig
{{ drupal_token('site:name') }}
```
## Drupal Config
Retrieves data from a given configuration object.
```twig
{{ drupal_config('system.site', 'name') }}
```
## Drupal Dump
Dumps information about variables. Alias `dd()` could be used instead of
`drupal_dump()`. You need to install Symfony VarDumper component.
```twig
{# Basic usage. #}
{{ drupal_dump(var) }}
{# Same as above but shorter. #}
{{ dd(var) }}
{# Dump all available variables for the current template. #}
{{ dd() }}
```
## Drupal Title
Returns a title for the current route.
```twig
{# The title is cached per URL. #}
{{ drupal_title() }}
```
## Drupal URL
Generates and returns a URL object from an internal path or `NULL` if URL is not
accessible to the user.
```twig
{# Basic usage. #}
{{ drupal_url('node/1') }}
{# Complex URL. #}
{{ drupal_url('node/1', {query: {foo: 'bar'}, fragment: 'example', absolute: true}) }}
```
## Drupal Link
Generates and returns a link object from an internal path or `NULL` if URL is
not accessible to the user.
```twig
{# It supports the same options as drupal_url(), plus attributes. #}
{{ drupal_link('View'|t, 'node/1', {attributes: {target: '_blank'}}) }}
{# This link will only be shown to the privileged users. #}
{{ drupal_link('Example'|t, '/admin', check_access=true) }}
```
## Drupal Messages
Displays status messages.
```twig
{{ drupal_messages() }}
```
## Drupal Breadcrumb
Builds the breadcrumb.
```twig
{{ drupal_breadcrumb() }}
```
## Drupal Breakpoint
Emits a breakpoint to the debug client.
```twig
{# Make Xdebug break on the specific line in the compiled Twig template. #}
{{ drupal_breakpoint() }}
```
## Contextual Links
Returns a renderable array representing contextual links.
```twig
{# Basic usage. #}
{{ drupal_contextual_links('entity.view.edit_form:view=frontpage:display_id=feed_1') }}
{{ drupal_view('frontpage') }}
{# Multiple links. #}
{{ drupal_contextual_links('node:node=123:|block_content:block_content=123:') }}
{{ content }}
```
## Token Replace
Replaces all tokens in a given string with appropriate values and returns the
HTML.
```twig
{# Basic usage. #}
{{ '[site:name]
[site:slogan]
'|token_replace }}
{# This is more suited to large markup. #}
{% apply token_replace %}
[site:name]
[site:slogan]
{% endapply %}
```
## Preg Replace
Performs a regular expression search and replace. For simple string
interpolation consider using built-in replace or format Twig filters.
```twig
{{ 'Drupal - community plumbing!'|preg_replace('/(Drupal)/', '$1') }}
```
For simple string interpolation consider using built-in `replace` or `format`
Twig filters.
## Image Style
Returns the URL of this image derivative for an original image path or URI. The
returned value is the absolute URL where a style image can be downloaded, so
it's suitable for use in an `
` tag. Requesting the URL will cause the image
to be created.
```twig
{# Basic usage #}
{{ 'public://images/ocean.jpg'|image_style('thumbnail') }}
{# Make sure to check that the URI is valid #}
{% set image_uri = node.field_media_optional_image|file_uri %}
{% if image_uri is not null %}
{{ image_uri|image_style('thumbnail') }}
{% endif %}
```
`image_style` will trigger an error on invalid or empty URIs, to avoid broken
images when used in an `
` tag.
## Transliterate
Transliterates text from Unicode to US-ASCII. Returns a string with non-US-ASCII
characters transliterated to US-ASCII characters, and unknown characters
replaced with `$unknown_character`.
```twig
{{ 'Привет!'|transliterate }}
```
## Check Markup
Runs all the enabled filters on a piece of text.
```twig
{{ 'bold strong'|check_markup('restricted_html') }}
```
## Format size
Generates a string representation for the given byte count.
```twig
{{ 12345|format_size }}
```
## Truncate
Truncates a UTF-8-encoded string safely to a number of characters.
```twig
{# Truncates a UTF-8-encoded string safely to 10 characters. #}
{{ 'Some long text'|truncate(10) }}
{# Same as above but with respect of words boundary. #}
{{ 'Some long text'|truncate(10, true) }}
```
## View
Returns a render array for entity, field list or field item.
```twig
{# Do not put these node entity examples into node.html.twig template to avoid recursion. #}
{{ node|view }}
{{ node|view('teaser') }}
{{ node.field_image|view }}
{{ node.field_image[0]|view }}
{{ node.field_image|view('teaser') }}
{{ node.field_image|view({settings: {image_style: 'thumbnail'}}) }}
```
## With
This filter is an opposite of core `without` filter: Adds new element to the
array and returns the modified array.
```twig
{# Set top-level value. #}
{{ content.field_image|with('#title', 'Photo'|t) }}
{# Set nested value. #}
{{ content|with(['field_image', '#title'], 'Photo'|t) }}
```
## Children
Filters out the children of a render array, optionally sorted by weight.
```twig
{% for tag in content.field_tags|children %}
- {{ tag }}
{% endfor %}
```
## File URI
When a field item list is passed, the URI will be extracted from the first item.
In order to get the URI of a specific item, specify its delta explicitly using
array notation.
```twig
{{ node.field_image|file_uri }}
{{ node.field_image[0]|file_uri }}
```
Media fields are fully supported including OEmbed resources, in which case
it will return the URL to the resource, similar to the `file_url` filter.
```twig
{{ node.field_media|file_uri }}
```
Useful to apply the `image_style` filter to Media fields. (Remember to check
whether a URI is actually returned.)
```twig
{% set media_uri = node.field_media|file_uri %}
{% if media_uri is not null %}
{{ media_uri|image_style('thumbnail') }}
{% endif %}
```
## File URL
For string arguments it works similar to core [`file_url()`](https://www.drupal.org/docs/theming-drupal/twig-in-drupal/functions-in-twig-templates#s-file-urluri) Twig function.
```twig
{{ 'public://sea.jpg'|file_url }}
```
In order to generate absolute URL set "relative" parameter to `false`.
```twig
{{ 'public://sea.jpg'|file_url(false) }}
```
When a field item list is passed, the URL will be extracted from the first item.
In order to get the URL of a specific item, specify its delta explicitly using
array notation.
```twig
{{ node.field_image|file_url }}
{{ node.field_image[0]|file_url }}
```
Media fields are fully supported including OEmbed resources.
```twig
{{ node.field_media|file_url }}
```
It is also possible to extract file URL directly from an entity.
```twig
{{ image|file_url }}
{{ media|file_url }}
```
## Entity URL
Gets the URL object for the entity.
See \Drupal\Core\Entity\EntityInterface::toUrl()
```twig
{# Creates canonical URL for the node. #}
{{ node|entity_url }}
{# Creates URL for the node edit form. #}
{{ node|entity_url('edit-form') }}
```
## Entity Link
Generates the HTML for a link to this entity.
See \Drupal\Core\Entity\EntityInterface::toLink()
```twig
{# Creates a link to the node using the node's label. #}
{{ node|entity_link }}
{# Creates link to node comment form. #}
{{ node|entity_link('Add new comment'|t, 'canonical', {fragment: 'comment-form'}) }}
```
## Entity translation
That is typically needed when printing data from referenced entities.
```twig
{{ media|translation.title|view }}
```
## Cache metadata
When using raw values from entities or render arrays it is essential to
ensure that cache metadata are bubbled up.
```twig
{{ content.field_media|cache_metadata }}
```
## PHP
PHP filter is disabled by default. You can enable it in `settings.php` file as
follows:
```php
$settings['twig_tweak_enable_php_filter'] = TRUE;
```
```twig
{{ 'return date('Y');'|php }}
```
Using PHP filter is discouraged as it may cause security implications. In fact,
it is very rarely needed. The above code can be replaced with the following.
```twig
{{ 'now'|date('Y') }}
```