Created
August 16, 2013 17:53
-
-
Save JeffreyWay/6252012 to your computer and use it in GitHub Desktop.
Sometimes, when filtering through a collection and displaying them on the page, you need to wrap every X items within a wrapper. Common examples are when using Bootstrap... Is this the recommended way to do that? Fairly clean as it is, I guess...
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
@foreach(array_chunk($posts, 3) as $postSet) | |
<div class="row"> <!-- this div will surround every three posts --> | |
@foreach($postSet as $post) | |
<h3>{{ $post['title'] }}</h3> | |
@endforeach | |
</div> | |
@endforeach |
An alternative...a little harder to understand than yours, but just proposing it as an alternative
Edit: Downside is you would have extra h3 tags sitting there too (although you could fix that).
@for($i = 0, $count = count($posts); $i < $count; $i += 3)
<div class="row"> <!-- this div will surround every three posts -->
<h3>{{ array_get($posts, $i.'.title') }}</h3>
<h3>{{ array_get($posts, ($i + 1).'.title') }}</h3>
<h3>{{ array_get($posts, ($i + 2).'.title') }}</h3>
</div>
@endforeach
Or you could use the modulus trick. Mostly was wondering if there was any secret Eloquent method for handling this. I guess array_chunk is the easiest way to go about it.
I was actually looking for this exact solution yesterday. This is much cleaner than what I came up with. Thanks.
Hmm.. I can't think of anything much cleaner. Like Zack said maybe a partial thing. I dunno.
Whenever I try this, array_chunk complains about getting an object instead of an array. I'm passing an Eloquent model. Any tips?
Try:
@foreach(array_chunk($posts->all(), 3) as $postSet)
instead of:
@foreach(array_chunk($posts, 3) as $postSet)
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
There's a solution involving an additional partial, but I'm not sure if it's 'cleaner.'