我有一个包含所有图像的数据库。我想在视图中显示4张图像,并将它们设置为“随机”,以便每次刷新时都会显示新图像。
这通常是非常基本的,但是我需要为每个图像使用不同的类名,以免使我失望。
这是我的控制人:
$randpics = Pic::inRandomOrder()
->where('status', 'Active')
->limit(4)
->get();
return view('page.index',compact('randpics'));
这是我的视图:(这给了我4次相同的随机图像)我希望PHP逻辑可以循环4次,为我提供4张不同的图像,但事实并非如此。 / p>
我什至尝试用4个不同的变量名将其写入4次不同的时间,但仍然只能得到4张相同的图像。
@foreach($randpics as $randpic)
@php
$cin = $randpic->cin ;
$mi = $randpic->my_img;
$rand = (asset("storage/images/cdp/$cin/profile-img/$mi"));
@endphp
@endforeach
<div class="pic-grid">
<div class="box-a" style="background-image: url({{ $rand }}"></div>
<div class="box-b" style="background-image: url({{ $rand }}"></div>
<div class="box-c" style="background-image: url({{ $rand }}"></div>
<div class="box-d" style="background-image: url({{ $rand }}"></div>
</div>
我意识到正确地做到这一点在我看来应该像这样...
@foreach($randpics as $randpic)
<div class="box-a" style="background-image:url({{ asset("storage/images/cdp/$randpic->cin/profile-img/$randpic->my_img") }}")>
</div>
@endforeach
但是由于4个不同的类,除非我可以以某种方式向4个输出的图像中的每一个添加不同的类,否则该循环将无法工作。 (box-a, box-b, box-c & box-d
)
任何帮助将不胜感激。
答案 0 :(得分:1)
首先,您需要在foreach循环中输出<div>
@foreach($randpics as $randpic)
@php
$cin = $randpic->cin ;
$mi = $randpic->my_img;
$rand = (asset("storage/images/cdp/$cin/profile-img/$mi"));
@endphp
<div ...>
@endforeach
接下来,要处理分配不同的类,您可以在数组中传递4个类,并在循环中引用它们:
$classes = ["box-a", "box-b", "box-c", "box-d"];
return view('page.index',compact('randpics', 'classes'));
@foreach($randpics as $index => $randpic)
...
<div class="{{ $classes[$index] }}"...>
@endforeach
因此,将它们放在一起:
Controller.php:
$randpics = Pic::inRandomOrder()
->where('status', 'Active')
->limit(4)
->get();
$classes = ["box-a", "box-b", "box-c", "box-d"];
return view('page.index',compact('randpics', 'classes'));
View.blade.php:
<div class="pic-grid">
@foreach($randpics as $index => $randpic)
@php
$cin = $randpic->cin ;
$mi = $randpic->my_img;
$rand = (asset("storage/images/cdp/$cin/profile-img/$mi"));
@endphp
<div class="{{ $classes[$index] }}" style="background-image: url({{ $rand }}"></div>
@endforeach
</div>