【问题标题】:How to use a variable in .twig syntax如何在 .twig 语法中使用变量
【发布时间】:2017-06-01 05:04:26
【问题描述】:

我要在树枝模板中干燥。我想知道您是否可以在树枝的 {{ notation }} 中访问变量。

例如:

{% 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;

【问题讨论】:

  • 所以你想连接变量?
  • 其实有一个变量叫content_en,content_es。只想在没有所有 if、if else、... 等的情况下访问该变量

标签: php twig slim twig-extension


【解决方案1】:

如果你想连接你需要使用~的输出

{{ 'content_' ~ page.lang }}

如果要调用动态变量需要使用attribute

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

_context 是 twig 中的一个特殊变量,它包含您传递给模板的所有变量

【讨论】:

  • {{ content ~ '' ~ page.lang }} 只给我 '_en' 而不是数据。 {{ attribute(_context, content ~ '' ~ page.lang) }} 实际上并没有给我任何东西
  • 对不起,content 也被误认为是一个变量,应该是一个字符串。更新答案 (twigfiddle)
  • 感谢暗蜂! {{ 'content_' ~ page.lang }} 现在给出了正确的名称。如何访问 var?属性线不起作用@ Slim?
  • 应该在任何框架上工作,因为答案纯粹基于树枝。您确实将该变量传递给了模板吗?
  • 是的。有一个 $content_en, $content_es 变量。但如果有很多“如果”、“其他”我想干掉,我会选择。但此时输出是 var 名称。仍然必须访问它。
【解决方案2】:

@Darabee。

你是对的,语法是:

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

但是我怎么注意到如果有一个数组并且你使用'。'而不是下划线“_”,它将不起作用。

就我而言,我有一个多阵列。这就是问题所在。

page['city']['content_en'].
or page.city.content_en 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多