2015-05-12 3 views
0

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

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

И у меня есть класс в папке Libraries:

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

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

+0

Возможный дубликат [Twig: in \ _array или аналогичный возможный внутри оператора if] (http://stackoverflow.com/questions/7460481/twig-in-array-or-similar-possible-within-if -statement) – pbenard

+0

Вы можете проверить следующий ответ http://stackoverflow.com/a/39611217/1696621 –

ответ

1

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

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

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

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