2015-02-23 58 views
2

我需要为每个3个附件创建一行。类似于刀片模板布局结构

@foreach($email->attachment as $attach) 
    <div class="row"> 
     <div class="col-lg-4"></div> 
     <div class="col-lg-4"></div> 
     <div class="col-lg-4"></div> 
    </div> 
@endforeach 

    <div class="row"> 
     <div class="col-lg-4">1st attachment</div> 
     <div class="col-lg-4">2nd attachment</div> 
     <div class="col-lg-4">3rd attachment</div> 
    </div> 
    <div class="row"> 
     <div class="col-lg-4">4th attachment</div> 
     <div class="col-lg-4">5th attachment</div> 
     <div class="col-lg-4">6th attachment</div> 
</div> 

等等!我曾搜索过这个问题,但发现了This link,但实际上与我的观点不同。 感谢

回答

3

Use array_chunk - 它是专为这每一个目的 - 让您可以剪切一个数组子大小和循环通过每个组

@foreach (array_chunk($email->attachment->toArray(), 3, true) as $array) 
    <div class="row"> 
    @foreach($array as $attachment) 
     <div class="col-lg-4">{{ $attachment['id'] }}</div> 
    @endforeach 
    </div> 
@endforeach 

而且使用@ Lukasgeiter的评论 - 你也可以做到这这样,如果它是一个Laravel Collection

@foreach ($email->attachment->chunk(3) as $array) 
    <div class="row"> 
    @foreach($array as $attachment) 
     <div class="col-lg-4">{{ $attachment->id }}</div> 
    @endforeach 
    </div> 
@endforeach 
+0

array_chunk需要一个数组而不是一个对象...... ?? – StraightForward 2015-02-23 07:38:32

+0

噢。首先转换为数组。看到我更新的答案。 – Laurence 2015-02-23 07:39:56

+3

假设'$ email-> attachment'是一个Laravel集合,您可以简单地执行'$ email-> attachment-> chunk(3)' – lukasgeiter 2015-02-23 07:45:01

0

试试这个,它的速度比生成2个数组:

<div class="row"> 
    @foreach($email->attachment as $index => $attach) 
     <div class="col-lg-4">{{$attach}}</div> 
     @if($index+1 === 0) 
     </div><div class="row"> 
     @endif 
    @endforeach 
    </div>