2017-08-30 6 views
1

にROWSPANを作成:小枝は、私は、このテーブルのデータを持っているループ

Name | Score | Remarks 
john | 80 | pass 
jane | 85 | pass 

それはこのように見えるようにする方法:

Name | Score | Remarks 
john | 80 | pass 
jane | 85 | 

備考テーブルのヘッドは、2のROWSPANを作成する必要がありますが、私はよtwigテンプレートを使用して実装する方法に問題があります。以下は私のコードです:

{% for name in names %} 
     <tr> 
      <td class="text-center">{{name.name}}</td> 
      <td class="text-center">{{name.score}}</td> 
      <td class="text-center" rowspan="2">{{name.remarks}}</td> 
     </tr> 
{% endfor %} 

このコードの出力はされています

Name | Score | Remarks | 
john | 80 | pass | 
jane | 85 |   | pass 

答えて

1

このような何かを試してみてください:

{% if loop.index0 % 2 == 0 %} 
    <td class="text-center" rowspan="2">{{name.remarks}}</td> 
{% endif %} 

% 2はあなたが好き行うことができますrowspan="2"

+0

ありがとう! – zluj

+0

あなたは大歓迎ですが、あなたのご返事に感謝します:) – doydoy44

+0

どのデータでも動作するソリューションを投稿しました(例2以上) – mykiwi

2

に対応this:

{% for name in names %} 
    <tr> 
     <td class="text-center">{{name.name}}</td> 
     <td class="text-center">{{name.score}}</td> 
     {% set rowspan = new_rowspan(names, loop.index0, 'remarks') %} 
     {% if rowspan %} 
      <td class="text-center" rowspan="{{ rowspan }}">{{name.remarks}}</td> 
     {% endif %} 
    </tr> 
{% endfor %} 

そして小枝の拡張子を追加しますので、多くの

class YourTwigExtension extends Twig_Extension 
{ 
    public function getFunctions() 
    { 
     return array(
      new Twig_Function('new_rowspan', [$this, 'calculateRowspan']), 
     ); 
    } 

    public function calculateRowspan($names, $from, $column) 
    { 
     // check if previous column has the same value 
     if ($from > 0 && $names[$from - 1][$column] === $names[$from][$column]) { 
      return; 
     } 

     for ($to = $from + 1; isset($names[$to]) && $names[$to][$column] === $names[$from][$column]; $to++); 

     return $to - $from; 
    } 
} 
+0

ありがとう!これは私の将来を助けるだろう:) – zluj

関連する問題