2016-12-23 8 views
0

を経由して、テーブルの定義:私は小枝を使ってHTMLでテーブルを表示する必要がHTML:私は問題に直面しています列

が、私のオブジェクトscoresは(score.valuescore.name)列ではなく、行を表します。もちろん、複数の行を使用して各行を表示することもできますが、その列を介してテーブルを作成することが可能かどうかを知りたがっていますか?またはこれを簡単に行うためのTwig機能があれば?

{% for score in scores %} 
    {% if loop.first %}<table class="table">{% endif %} 
     //HERE I got column 
    {% if loop.last %}</table>{% endif %} 
{% endfor %} 

レンダリングされたテーブルは、その後のように見えるはずです:

score1score2score3だからHTMLで、それがどのように見えるはずです score scoresのループ

ある

|score1.name |score2.name |score3.name |etc... 
|------------|------------|------------|-------- 
|score1.value|score2.value|score3.value|etc... 

<table> 
    <tr> 
     <th>score1.name</th> 
     <td>score1.value</td> 
    </tr> 
    <tr> 
     <th>score2.name</th> 
     <td>score2.value</td> 
    </tr> 
    <tr> 
     <th>score3.name</th> 
     <td>score3.value</td> 
    </tr> 
    <tr> 
     <th>etc...</th> 
     <td>etc...</td> 
    </tr> 
</table> 
+0

'score'も配列ですか? – GentlemanMax

+0

@GentlemanMaxご関心をお寄せいただきありがとうございます。 'score'はオブジェクトで、' $ score-> getName() '、' $ score-> getValue() 'を使ってデータにアクセスできます。 – homer

+0

ああ、データの列ですか? – GentlemanMax

答えて

0

あなたはこのように小枝変数を使用して、テーブルを構築することができます:彼らが構築されれば、あなたがそれらをループ内の行を構築し、出力

{% set rowName = "" %} 
{% set rowScore = "" %} 
{% for score in scores %} 
    {% set rowName = rowName~"<td>"~score.name~"</td>" %} 
    {% set rowScore = rowScore~"<td>"~score.value~"</td>" %} 
{% endfor %} 
<table class="table"> 
    <tr>{{ rowName }}</tr> 
    <tr>{{ rowScore }}</tr> 
</table> 

この方法です。理想的には、scoresがTwigに到達する前に、このような操作が起こっているはずですが、もしあなたがこの方法で動く必要があれば、この方法でうまくいくはずです。

+0

あなたは「{%set rowScore = rowScore〜 "​​"〜スコアの最後に忘れてしまった。値〜 "%}" – homer

+0

おっと、編集しました。 – GentlemanMax

0

Doctrineでマッピングが正しく行われていれば、それは簡単です。あなたのScore Entityには、getEvent()のような関連するイベントを取得する方法があり、イベントエンティティにgetName()のような名前のメソッドがあると仮定します。次のようにコードすることができます:

<table class="table"> 
<tr><th>Event name</th><th>Score Name</th><th>Score Value</th></tr> 
{% for score in scores %} 
    <tr><td>score.getEvent.getName</td><td>score.getName</td><td>score.getValue</td></tr> 
{% endfor %} 
</table> 

私はあなたを助けるべきだと思います。

+0

これはスコアの列を表示しますが、私はスコアの列を表示したい、つまり最初の行は 'score.name'で、もう一つは' score.value'です – homer

+1

代替ですか?例えば: '​​score.name​​score.value​​score.name​​score.value​​score.name​​score.value'。あなたの投稿を編集して、サンプルデータが入ったテーブルの '完全な '例を表示して、本当にあなたに適切な答えを与えることができればいいと思います。 –

+0

本当にありがとうございます。実際にはもっと正確にしようと思っていたかもしれませんが、それは私の頭の中ではっきりしていました。その可能なオプションについては考えていませんでした...とにかく、@GentlemanMaxは答えを出します。私は私の質問を編集して、他の人たちにはっきりとさせる。 – homer

関連する問題