Как использовать переменную в синтаксисе.twig

Я должен СУХОЙ в шаблоне ветки. Мне интересно, вы можете получить доступ к переменной в {{нотации}} ветки.

Например:

{% if page.lang == 'en' %}
   // do something 
   {{ content_en }}
{% endif %}
{% if page.lang == 'es' %}
    // hacer algo 
    {{ content_es }}
{% endif %}

Я попробовал некоторые другие подходы. Но возможно ли (как-то) объединить переменные и сделать что-то вроде этого:

// Php example
$var = 'content_';
$var .= page.lang;
// Output would be 'content_en';

Но тогда для Twig?

// Something like 
{{ content_ + page.lang }}

Чтобы было понятнее. Я хотел бы получить доступ к правильной переменной.

$content_en = 'this is just some content';
$content_es ='Alguna información';
$var = 'content_';
$var .= 'en';

$key = ${$var};
// Output is 'this is just some content'
echo $key;

2 ответа

Решение

Если вы хотите объединить вывод, вам нужно использовать ~

{{ 'content_' ~ page.lang }}

Если вы хотите вызвать динамическую переменную, вам нужно использовать attribute

{{ attribute(_context, 'content_' ~ page.lang) }}

_contextэто специальная переменная в ветке, которая содержит все переменные, которые вы передали шаблону

@Darabee.

Вы правы, синтаксис будет:

{{ attribute(_context, 'content_' ~ page.lang) }}

Но как только я заметил это, если есть массив и вы используете '.' вместо подчеркивания '_' это не сработает.

В моем случае у меня есть мульти-массив. Это проблема.

page['city']['content_en'].
or page.city.content_en 
Другие вопросы по тегам