Проверьте, есть ли в массиве в шаблоне ветки

У меня есть вопрос, можно ли сделать in_array в шаблоне ветки?
Например, у меня есть вызов массива aColors с цветами одного продукта:

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

И у меня есть класс в папке библиотеки:

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 %}

Но не работа. Есть решение? Пожалуйста, помогите мне. Может кто-нибудь мне помочь? Спасибо заранее !!!

0

Решение

Twig не предназначен для запуска в нем PHP-кода. Это официальная позиция разработчиков Twig: Twig — это движок шаблонов, и единственное, что он делает — это шаблоны, он ничего не знает о классах, свойствах статических классов и других вещах, предназначенных только для PHP. Варианты у вас есть:

  • Передайте этот массив как переменную контекста, глобальную или локальную, как вы обычно делаете (предпочтительный способ).
  • Создайте расширение или функцию Twig, которая будет обращаться к вашему свойству класса изнутри (это идет вразрез с принципами Twig, но работает, хотя я буду использовать другую строку моего ответа просто для предупреждения вас не делать этого).
1

Другие решения

Вы сравниваете только с ключами, так что используйте

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

По вопросам рекламы [email protected]