2011-08-11 9 views
81

Tengo una matriz multidimensional donde algunos objetos existen y otros no. Sigo recibiendo un¿Cómo se comprueba si existe un objeto en el motor de plantillas Twig en Symfony2?

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

El código que estoy utilizando 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 por desgracia esta estructura de datos se realiza a través de un feed, por lo que no puede cambiarlo.

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

Respuesta

145

rápidamente hizo una búsqueda, espero que esto es obras para usted: p

defined

controles definidos si una variable se define en el contexto actual. Esto es muy útil si se utiliza la opción strict_variables:

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

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

Eso se ve brillante. Voy a intentar eso ahora. –

+0

Eso funcionó como un regalo. Gracias Tjorriemorrie! –

+1

FWIW, el enlace ahora es http://twig.sensiolabs.org/doc/tests/defined.html – matt

0

Si usted está mirando para una llave/variable dentro de un objeto de matriz multidimensional, a continuación, (si se ha definido object.object.key) no funcionó para mí.

Pero (si se define object.object['key'] se define) o (si se define object.object.get('key')) funciona bien.

Cuestiones relacionadas