Как использовать переменную в синтаксисе.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