foreach ($languages as $language) {
if(!isset($menu_new[$language['language_id']])) $menu_new[$language['language_id']] = "text";
}
так не работает
{% for language in languages %}
{% if (menu_new[language.language_id] is defined) %} {% set menu_new[language.language_id] = "text" %}{% endif %}
{% endfor %}
Может вместо menu_new[language.language_id]
попробовать menu_new.language.language_id?
... и menu_new[language.language_id] заменить на menu_new.language.language_id
Andrey_87: Смотрите - вы не замечаете странность?
Функция isset($menu_new[$language['language_id']] проверяет существует ли в массиве $menu_new запись с ключом $language['language_id'].
Так? Так.
По логике вещей - если запись существует - ей присваивается значение:
$menu_new[$language['language_id']] = "text";
-------------------------------
У вас ситуация обратная - если запись НЕ существует (!isset) - то нужно ее СОЗДАТЬ - И присвоить значение "text".
-------------------------------
Теперь в твиг - вы что проверяете?
if (menu_new[language.language_id] is defined)
Вы проверяете обратное... То, что я обозначил выше - ЕСЛИ ЗАПИСЬ СУЩЕСТВУЕТ.
Скорее всего вам нужно писать нечто подобное:
if (menu_new[language.language_id] not is defined)
Или в twig - там есть другие синтаксисы - типа in_array...
{% for language in languages %}
{% if menu_new[language.language_id] is not defined %}
{% set menu_new[language.language_id] = "text" %}
{% endif %}
{% endfor %}