0

私はTwigとSymfony2(およびPHPも)が初めてです。現在、{{result.attribute1}} ステートメントの後に {{result.attribute1}} を実行することで属性にアクセスできるオブジェクトの配列があります。

変数 {{var| を使用したい removePath}} (ここで、removePath は Twig で作成した拡張です) を使用して、結果配列を反復処理します。私がやりたいことは、行を返すことif {{var| removePath}} == result.attribute1です。

これはTwigで可能ですか?もしそうなら、私はこれにどのようにアプローチすべきですか?私はすでに以下のコードに似たものを試しましたが、「else」ステートメントが実行されます (一致がないことを示しています)。も試しvar == result.attributeましたが、これもうまくいきませんでした。

{% for result in results %} 
{% if var|removePath in result.attribute1 %}
   {{ var | removePath }} exists.
{% else %}
   {{ var | removePath }} doesn't exist in array.
{% endif %}{% endfor %}

したがって、2 つの質問があると思います。

1)TWIGでそれは可能ですか(可能であれば、どのように)

2)行全体を取得するためのより簡単でより良い方法はありますか(オブジェクト配列には属性2、3、および4も含まれており、属性1と共通のものを返したいと思います(varと一致する場合))

最近追加された配列のスキーマを参照してください

よろしくお願いします。私の質問が理解できることを願っています:S

4

1 に答える 1

0

式を括弧で囲むだけです。

(var|removePath)式をグループ化するを使用します。

例:

{% if ( 1+1 ) == 2 %}

また、このattribute()関数を使用して、オブジェクト/配列のプロパティとメソッドにアクセスできます。

{{ attribute(object, method) }}
{{ attribute(object, method, arguments) }}
{{ attribute(array, item) }}

小枝のドキュメントの属性の章。

次のように三項演算子を使用して、テンプレート コードをさらに短縮します。

{% set strippedVar = var|removePath %}
{{ strippedVar }}{{ (strippedVar in result.attribute1) ? 'exists' : 'does not exist' }}.

フィルター処理された変数を別の変数に設定すると、フィルターが複数回実行されるのを防ぐことができます。

于 2013-07-11T13:55:41.810 に答える