¿Cómo se comprueba si existe un objeto en el motor de plantillas Twig en Symfony2?

84

Tengo una matriz multidimensional donde existen algunos objetos y otros no. Sigo recibiendo un

¿El método "código" para el objeto "stdClass" no existe en ... ?

El código que estoy usando en mi plantilla es:

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

Algunos productos no tienen este código y, lamentablemente, esta estructura de datos se proporciona a través de un feed, por lo que no puedo cambiarla.

Cuando miré la documentación de Twig, interpreté que si un objeto o método no estaba allí, ¿simplemente devolvería nulo?

Adam Stacey
fuente

Respuestas:

150

Hice una búsqueda rápidamente, espero que esto funcione para usted: p

definido

definido comprueba si una variable está definida en el contexto actual. Esto es muy útil si usa la opción estrictas_variables:

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

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