2016-04-29 20 views
1

初めてこの問題に遭遇しましたが、修正できません。 実際には、レンダリングされたページに多くの変数を与えるコントローラーを使ってテンプレートをレンダリングしています。それらのうちの1つは$ categoriesと呼ばれ、Categoryオブジェクトの多くがあります。その1つはコレクションで、別のカテゴリを参照します。文字列としてforeachでレンダリングされた変数を使用する方法Symfony 2〜twig

ポイントで、私はこのコードを実行しよう、しかしobviusly私はエラーを取得するイムが印刷しようとしているのでコレクション

{% for category in categories %} 
    <tr> 
     <td>{{ category.name }}</td> 
     <td>{{ category.description }}</td> 
     <td>{{ category.isPublic }}</td> 
     <td>{{ category.parentCategory }}</td> 
     <td>{{ category.childrens }}</td> 
     <td> 
      <i class="fa fa-pencil-square-o" aria-hidden="true"></i> 
      <i class="fa fa-times" aria-hidden="true"></i> 
     </td> 
    </tr> 
{% endfor %} 

だから、私のような何かをしようとすることを決めた。

{% for category in categories %} 
<tr> 
    <td>{{ category.name }}</td> 
    <td>{{ category.description }}</td> 
    <td>{{ category.isPublic }}</td> 
    <td>{{ category.parentCategory }}</td> 
    <td> 
     {% for children in {{ category.childrens }} %} 
      children.name 
     {% endfor %} 
    </td> 
    <td> 
     <i class="fa fa-pencil-square-o" aria-hidden="true"></i> 
     <i class="fa fa-times" aria-hidden="true"></i> 
    </td> 
</tr> 

問題:私はforeachの中でレンダリングされた変数を使用する方法がわからない

、イムこのエラーをのgettin:

A hash key must be a quoted string, a number, a name, or an expression enclosed in parentheses (unexpected token "punctuation" of value "{" in AppBundle:admin:category/listCategory.html.twig at line 55.

答えて

4

{{ }}または{% %}または{# #}は、Twigのオープンおよびクローズタグです。 PHPコードのSimilairから<?php ?>へ開いたタグを使用すると、テキストは閉じタグが見つかるまでTwigによって解析されます(これはPHPでの処理方法でもあり、唯一の違いはTwigには別のタグが付いているということです)。

開いた後、もう一度開く必要はありません。 category.childrensをダンプしたくない場合は、forループで使用します。したがって、代わりに:{% for children in {{ category.childrens }} %}{% for children in category.childrens %}を使用してください。

(you can compare this to PHP, doing 
    <?php foreach (<?php echo $category->childrens ?> as $children) { ?> 
doesn't make much sense). 
+0

ああ、私は彼らが "別のタグ"だと思っていたので、私は多くを使うことができました...本当にありがとう! D –

+0

こんにちは@VictorRiberoGuaschこれまたは任意の答えがあなたの質問を解決した場合は、[それを受け入れる](http://meta.stackexchange.com/a/5235/237701)をチェックマークをクリックして検討してください。これは、あなたが解決策を見つけ出し、回答者とあなた自身の両方に評判を与えていることを広範なコミュニティに示します。これを行う義務はありません。 –

+0

ええ、確かに、申し訳ありません! hahahahaも多くの感謝:) –

1

エラーはおそらく、この行から来ている:

{% for children in {{ category.childrens }} %} 

これは、{{ }}は別の小枝タグ内で使用することはできません有効な構文ではありません。

次のコードは動作するはずです:

{% for children in category.childrens %} 
0

を正直に言うと、私は小枝のテンプレートのlangaugeで0経験を持っているので、私はここで間違っているかもしれないが、他の言語との私の経験は私に次のコードを伝えます:

{% for children in {{ category.childrens }} %} 
     children.name 
    {% endfor %} 

は、おそらく次のようになります。

{% for children in category.childrens %} 
     {{ children.name }} 
    {% endfor %} 
関連する問題