Как проверить, существует ли объект в шаблонизаторе Twig в Symfony2?

81

У меня есть многомерный массив, где некоторые объекты существуют, а другие нет. Я продолжаю получать

Метод "код" для объекта "stdClass" не существует в...?

Код, который я использую в своем шаблоне:

{% for item in items %}
    <p>{% if item.product.code %}{{ item.product.code }}{% endif %}</p>
{% endfor %}

Некоторые продукты не имеют этого кода, и, к сожалению, эта структура данных предоставляется через фид, поэтому я не могу его изменить.

Когда я посмотрел документацию Twig, я понял, что если объект или метод не был там, он просто вернул бы null?

Теги:
twig

2 ответа

137
Лучший ответ

Быстро просмотрел, надеюсь, что это работает для вас: p

defined

определены проверки, если переменная определена в текущем контексте. Это очень полезно, если вы используете опцию strict_variables:

{# defined works with variable names #}
{% if foo is defined %}
    ...
{% endif %}

{# and attributes on variables names #}
{% if foo.bar is defined %}
    ...
{% endif %}
  • 0
    Это выглядит великолепно. Я попробую это сейчас.
  • 0
    Это сработало. Спасибо Tjorriemorrie!
Показать ещё 2 комментария
0

Если вы проверяете ключ/переменную внутри многомерного массива, то (если object.object.key определено) не работает для меня.

Но (если определено object.object['key']) или (если object.object.get('key') определено) работает хорошо.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню