Reputation: 63
I need to create a row for each 3 attachments. Something like
@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>
and so on! I had searched for the question but just found This link but It's actually different from my perspective. Thanks
Upvotes: 2
Views: 366
Reputation: 60088
Use array_chunk - it is designed for this each purpose - so you can cut an array into sub-sizes and loop through each group
@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
And using @Lukasgeiter's comment - you could also do it this way if it is a 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
Upvotes: 3
Reputation: 374
Try this, it's faster than generate 2 arrays:
<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>
Upvotes: 0