【问题标题】:Twig Compare a parameter passed to a template inside the templateTwig 比较传递给模板内部的模板的参数
【发布时间】:2016-08-02 15:06:55
【问题描述】:

在 Twig 中,我成功渲染了一个模板并将以下数组传递给它:

    $params = array(
                    'value1'    => 'y',
                    'value2'    => 'x'
                );

在我渲染的模板中,我想要一个 if 语句,用于将 'value1' 的值与字符串变量进行比较。

有点像

    {% set type =  {{ value1 }}  %}
    {%  if type == y %}
       {* do code *}
    {%  elseif type == b %}
       {* do code *}

如何将 {{ value1 }} 的值分配给 type,因为此示例不起作用。

【问题讨论】:

    标签: symfony twig


    【解决方案1】:

    试试:{% set type = value1 %}

    但为什么不只是:

    {% if value1 == y  %}
    
    {% elseif value2 == x %}
    
    {% endif %}
    

    ?

    【讨论】:

      【解决方案2】:

      大概是这样的:

      {% set type = params['value1']   %}
      

      或者更简单地说:

      {% set type = params.value1   %}
      

      更多信息here在文档中

      然后你可以像往常一样在 if 语句中使用:

      {%  if type == 'x' %}
            do something for the X case 
      {%  elseif type == 'y' %}
            do somethingelse for the Y case
      {% endif %}
      

      Here 一个工作示例。

      希望有帮助

      【讨论】:

      • 如果 OP 像这样传递数组:$twig->render('template.html, $parms'); 那么这是不正确的,因为它只是 {% set type = value1 %}
      • {% set type = params['value1'] %}{% set type = params.value1 %} 不起作用,事实证明 value1 可以仅通过其名称引用。所以{% set type = value1 %} 工作得很好。最终,我只使用了{% if value1 == y %} {% elseif value2 == x %} {% endif %}
      猜你喜欢
      • 1970-01-01
      • 2012-06-02
      • 1970-01-01
      • 2023-03-25
      • 1970-01-01
      • 2021-11-24
      • 2011-09-14
      • 1970-01-01
      相关资源
      最近更新 更多