Как вы проверяете, существует ли объект в движке шаблонов Twig в Symfony2?

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

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

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

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

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

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

Ответ 1

Быстро просмотрел, надеюсь, что это работает для вас: 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 %}

Ответ 2

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

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