2011-08-11 16 views
81

いくつかのオブジェクトが存在し、他のオブジェクトは存在しない多次元配列を持っています。私は続けているSymfony2のTwigテンプレートエンジンにオブジェクトが存在するかどうかをどうやって確認しますか?

"stdClass"オブジェクトのメソッド "code"は存在しません...

私は私のテンプレートで使用していたコードは次のとおりです。

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

一部の製品は、このコードと、残念ながら、このデータ構造は、フィードを介して提供されていないので、私はそれを変更することはできません。

私はTwigのドキュメントを見て、オブジェクトやメソッドがないとnullを返すと解釈しました。

答えて

145

すぐには検索をしたが、これはあなたのための作品であると思います:P

defined

定義されたチェックを変数は現在のコンテキストで定義されている場合。あなたは多次元配列オブジェクト内のキー/変数をチェックしている場合

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

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

これはすばらしく見えます。私は今それを試みます。 –

+0

それは治療をしました。ありがとうTjorriemorrie! –

+1

FWIW、リンクはhttp://twig.sensiolabs.org/doc/tests/defined.html – matt

0

object.object.keyが定義されている場合)、そして、私のために動作しませんでした:あなたはstrict_variablesオプションを使用する場合、これは非常に便利です。

ただし、(object.object['key']が定義されている場合)または(object.object.get('key')が定義されている場合)正常に機能します。

関連する問題