php - 有什么方法可以更改此代码,以免我重复相同的 html 代码 4 次?
问题描述
如您所见,在col-home-1
tocol-home-4
元素中,我使用了相同的 html 代码,但我不喜欢这样,但是,我不确定如何避免重复 4 次。任何提示将不胜感激。
<div class="flex-grid-home">
@php($count = 0)
@foreach($images as $image)
@if ($count % 4 == 0)
@php($images1[] = $image)
@elseif($count % 4 == 1)
@php($images2[] = $image)
@elseif($count % 4 == 2)
@php($images3[] = $image)
@else
@php($images4[] = $image)
@endif
@php($count++)
@endforeach
@if (!empty($images1))
<div class="col-home-1">
@foreach($images1 as $image)
<div class='imageContainer'>
<div class="stickyContainer blackGradient">
<h1 class='imageTitle'>{{$image->name}}</h1>
<img class='uploadedImg' src='{{url("storage/uploads/images/thumbnails/".$image->file_name)}}' alt='Random image'/>
<a class='specialA' href='{{url("image/".$image->id)}}'></a>
@auth
<div class='votingContainer'>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 1 ) ? "liked" : "like" }}' id='{{$image->id}}'></a>
<p class='voteCount'>{{ $image->upvotes - $image->downvotes }}</p>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 0 ) ? "disliked" : "dislike" }}' id='{{$image->id}}'></a>
</div>
@endauth
</div>
</div>
@endforeach
</div>
@endif
@if (!empty($images2))
<div class="col-home-2">
@foreach($images2 as $image)
<div class='imageContainer'>
<div class="stickyContainer blackGradient">
<h1 class='imageTitle'>{{$image->name}}</h1>
<img class='uploadedImg' src='{{url("storage/uploads/images/thumbnails/".$image->file_name)}}' alt='Random image'/>
<a class='specialA' href='{{url("image/".$image->id)}}'></a>
@auth
<div class='votingContainer'>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 1 ) ? "liked" : "like" }}' id='{{$image->id}}'></a>
<p class='voteCount'>{{ $image->upvotes - $image->downvotes }}</p>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 0 ) ? "disliked" : "dislike" }}' id='{{$image->id}}'></a>
</div>
@endauth
</div>
</div>
@endforeach
</div>
@endif
@if (!empty($images3))
<div class="col-home-3">
@foreach($images3 as $image)
<div class='imageContainer'>
<div class="stickyContainer blackGradient">
<h1 class='imageTitle'>{{$image->name}}</h1>
<img class='uploadedImg' src='{{url("storage/uploads/images/thumbnails/".$image->file_name)}}' alt='Random image'/>
<a class='specialA' href='{{url("image/".$image->id)}}'></a>
@auth
<div class='votingContainer'>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 1 ) ? "liked" : "like" }}' id='{{$image->id}}'></a>
<p class='voteCount'>{{ $image->upvotes - $image->downvotes }}</p>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 0 ) ? "disliked" : "dislike" }}' id='{{$image->id}}'></a>
</div>
@endauth
</div>
</div>
@endforeach
</div>
@endif
@if (!empty($images4))
<div class="col-home-4">
@foreach($images4 as $image)
<div class='imageContainer'>
<div class="stickyContainer blackGradient">
<h1 class='imageTitle'>{{$image->name}}</h1>
<img class='uploadedImg' src='{{url("storage/uploads/images/thumbnails/".$image->file_name)}}' alt='Random image'/>
<a class='specialA' href='{{url("image/".$image->id)}}'></a>
@auth
<div class='votingContainer'>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 1 ) ? "liked" : "like" }}' id='{{$image->id}}'></a>
<p class='voteCount'>{{ $image->upvotes - $image->downvotes }}</p>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 0 ) ? "disliked" : "dislike" }}' id='{{$image->id}}'></a>
</div>
@endauth
</div>
</div>
@endforeach
</div>
@endif
</div>
解决方案
您可以在视图文件夹中创建一个部分:
图像组件:
@if (!empty($images))
<div class="{{$class}}">
@foreach($images as $image)
<div class='imageContainer'>
<div class="stickyContainer blackGradient">
<h1 class='imageTitle'>{{$image->name}}</h1>
<img class='uploadedImg' src='{{url("storage/uploads/images/thumbnails/".$image->file_name)}}' alt='Random image'/>
<a class='specialA' href='{{url("image/".$image->id)}}'></a>
@auth
<div class='votingContainer'>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 1 ) ? "liked" : "like" }}' id='{{$image->id}}'></a>
<p class='voteCount'>{{ $image->upvotes - $image->downvotes }}</p>
<a href='#' class='vote {{ ( auth()->user()->votes()->whereImageId($image->id)->first() && auth()->user()->votes()->whereImageId($image->id)->first()->vote == 0 ) ? "disliked" : "dislike" }}' id='{{$image->id}}'></a>
</div>
@endauth
</div>
</div>
@endforeach
</div>
@endif
然后在您看来,您将这样做:
<div class="flex-grid-home">
@php($count = 0)
@foreach($images as $image)
@if ($count % 4 == 0)
@php($images1[] = $image)
@elseif($count % 4 == 1)
@php($images2[] = $image)
@elseif($count % 4 == 2)
@php($images3[] = $image)
@else
@php($images4[] = $image)
@endif
@php($count++)
@endforeach
@include('imagesComponent', ['images' => $images1, 'class' => "col-home-1"])
@include('imagesComponent', ['images' => $images2, 'class' => "col-home-2"])
@include('imagesComponent', ['images' => $images3, 'class' => "col-home-3"])
@include('imagesComponent', ['images' => $images4, 'class' => "col-home-4"])
</div>
推荐阅读
- swift - 参数类型“AnyObject.Protocol”应为类或类约束类型的实例
- javascript - 如何在 React/React-Native 的 React-navigation 中用上下文包装几个屏幕?
- azure - Azure Databricks 笔记本未通过 YAML deploynotebooks@0 任务部署
- linked-data - 在 shacl 验证报告中同时显示自定义消息和默认消息
- ithit-webdav-server - ITHit WebDAV - 编辑 Office 文档错误
- javascript - ReactJS:重定向到主页
- bootstrap-multiselect - 更改引导多选数据提供程序不会刷新小狗位置
- vtiger - 无法通过 vTiger API 向 Account 模块添加评论
- mysql - 使用连接到服务器“db”上的数据库“”时发生错误。- 码头工人
- python - 如何在不更改“linestyle”的情况下更改 Seaborn 图例“fontsize”?