验证是否在树枝模板中的数组中

Verify if is in array in twig template

我有个问题,可以在 twig 模板中制作 in_array 吗? 例如,我有一个名为 aColors 的数组,其中包含一种产品的颜色:

Array[
  0 => "1"
  1 => "2"
]

我在库文件夹中有一个 class:

class Colors{
public static $aColors = array(
    '1' => 'White',
    '2' => 'Black',
    '3' => 'Yellow',
    '4' => 'Red',
    '5' => 'Green',
    '6' => 'Blue',
);
}

现在我想验证带有产品颜色的数组的值是否=带有带有颜色的一般数组的键,我在 .twig 中尝试过:

{% for key,val in aColors %}
      {% if val in Colors::aColors %}
{% endfor %}

但是不行。存在解决方案吗?请帮我。谁能帮我?提前致谢!!!

您正在与键进行比较,因此请使用

    {% for key,val in aColors %}
        {% if val in Colors::aColors|keys %}
    {% endfor %}

Twig 无意 运行 任何 PHP 代码。这是 Twig 开发人员的官方立场:Twig 是一个模板引擎,它唯一做的就是模板化,它对 classes、静态 class 属性和其他 PHP 一无所知- 只有东西。您的选项是:

  • 像往常一样将此数组作为全局或局部上下文变量传递(首选方式)。
  • 创建一个扩展或 Twig 函数,它将在内部访问您的 class 属性(这违反了 Twig 原则,但有效,尽管我将使用我的另一行答案只是为了警告您不做).