Jak sprawdzić, czy obiekt istnieje w silniku szablonów Twig w Symfony2?

Mam wielowymiarową tablicę, w której niektóre obiekty istnieją, a inne nie.]}

Metoda "code" dla obiektu "stdClass" nie istnieje w...?

Kod, którego używam w szablonie to:

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

Niektóre produkty nie mają tego kodu i niestety ta struktura danych jest dostarczana za pośrednictwem kanału, więc nie mogę jej zmienić.

Kiedy spojrzałem na dokumentację Twig zinterpretowałem, że jeśli obiektu lub metody nie ma, to po prostu powróci null?

Author: Adam Stacey, 2011-08-12

2 answers

Szybko zrobiłem wyszukiwanie, mam nadzieję, że to działa dla Ciebie: P

Zdefiniowane

Defined sprawdza, czy zmienna jest zdefiniowana w bieżącym kontekście. Jest to bardzo przydatne, jeśli używasz opcji strict_variables:

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

{# and attributes on variables names #}
{% if foo.bar is defined %}
    ...
{% endif %}
 146
Author: Tjorriemorrie,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-10-11 07:12:41

Jeśli sprawdzasz klucz / zmienną wewnątrz wielowymiarowego obiektu tablicy, to (jeśli object.object.key jest zdefiniowany) nie działa dla mnie.

Ale (jeśli object.object['key'] jest zdefiniowany) lub (jeśli object.object.get('key') jest zdefiniowany) działa dobrze.

 0
Author: bijoy,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-07-20 15:35:45