【问题标题】:Laravel/PHP - loop through items in a viewLaravel/PHP - 遍历视图中的项目
【发布时间】:2015-02-02 10:36:26
【问题描述】:
我有以下 html/blade 模板:
{{--show all projects--}}
@if(!empty($projects))
@foreach($projects as $project)
<div class="slide">
<ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
<li>
<div class="thumb">
<h3 class="thumbTitle">{{$project->title}}</h3>
{{--laat maar 1 image zien --}}
@if(!empty($project->project_images))
{{ HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}
@endif
</div>
</li>
</div>
@endforeach
@endif
</div>
我想要的是以下内容:8 个项目显示在 .slide 类的 div 中,每个 8 个项目的 .slide 类的多个 div:例如,我有 25 个项目:比我想要 4 个 .slide div 3个有8个项目,1个有一个项目......
这可能吗?
【问题讨论】:
标签:
php
laravel
view
foreach
blade
【解决方案1】:
您可以为每 8 个项目关闭和打开一个新的 .slide div。我想ul 也必须在每个 div 中重新启动?
@if(!empty($projects))
<div class="slide">
<ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
@for($i = 0; $i < count($projects); $i++)
<?php $project = $projects[$i]; ?>
<li>
<div class="thumb">
<h3 class="thumbTitle">{{$project->title}}</h3>
{{-- only show one image --}}
@if(!empty($project->project_images))
{ HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}
@endif
</div>
</li>
{{-- If there were 8 projects, start a new .slide --}}
@if ($i % 8 == 7)
</ul></div><div class="slide"><ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
@endif
@endfor
</ul>
</div>
@endif
【解决方案2】:
你可以试试这种和平的代码
{{--show all projects--}}
@if(!empty($projects))
$i = 8;
@foreach($projects as $project)
@if($i%8 == 0) // checks for multiples if 8 and wraps your content with div and ul
<div class="slide">
<ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
@endif
<li>
<div class="thumb">
<h3 class="thumbTitle">{{$project->title}}</h3>
{{--laat maar 1 image zien --}}
@if(!empty($project->project_images))
{{ HTML::image('useruploadedimages/'.$project->project_images[0]->url) }}
@endif
</div>
</li>
@if($i++%8 == 0) // checks for multiples if 8 and increments i value
</ul> // ends the ul and div
</div>
@endif
@endforeach
@endif
</div>
希望对你有帮助
【解决方案3】:
你可以像这样使用array_chunk:
@foreach(array_chunck($projects->toArray(), 8) as $projects)
<div class="slide">
<ul class="small-block-grid-1 medium-block-grid-3 large-block-grid-4">
@foreach($projects as $project)
<li>
<div class="thumb">
<h3 class="thumbTitle">{{$project['title']}}</h3>
@if(!empty($project['project_images']))
{{HTML::image('....)}}
@endif
</div>
</li>
@endforeach
</ul>
</div>
@endforeach
注意数组表示法[],而不是对象表示法->。