How do you check if an object exists in the Twig templating engine in Symfony2?

Adam Stacey picture Adam Stacey · Aug 12, 2011 · Viewed 68.1k times · Source

I have a multidimensional array where some objects exist and others don't. I keep getting a

Method "code" for object "stdClass" does not exist in...?

The code I am using in my template is:

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

Some products do not have this code and unfortunately this data structure is provided via a feed, so I cannot change it.

When I looked at the Twig documentation I interpreted that if an object or method was not there it would just return null?

Answer

Tjorriemorrie picture Tjorriemorrie · Aug 12, 2011

Quickly did a lookup, hope this is works for you :p

defined

defined checks if a variable is defined in the current context. This is very useful if you use the strict_variables option:

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

{# and attributes on variables names #}
{% if foo.bar is defined %}
    ...
{% endif %}