【发布时间】:2021-05-24 08:08:34
【问题描述】:
这是我在主页中的横幅结构:
如您所见,我有 4 个用于横幅的部分 - 小横幅 |中等横幅| 高分辨率照片| CLIPARTO新闻横幅|大横幅
我有一个名为 Banner 的模型,4 个控制器来管理这个横幅和 4 个表格来保存数据。
这是Banner 模型:
<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Banner extends Model
{
protected $fillable = [
'title', 'image', 'url', 'image_title', 'image_alt'
];
}
和控制器:
小控制器:
class SmallController extends Controller
{
public function small_list()
{
$smallBanners = DB::table('small_banner')->get();
return view('admin.banners.small.list', compact('smallBanners'));
}
public function small_create()
{
return view('admin.banners.small.add');
}
public function small_store(Request $request)
{
$data = $request->validate([
'title' => 'required',
'url' => 'required',
'image' => 'required',
'image_title' => 'max:255',
'image_alt' => 'max:255'
]);
DB::table('small_banner')->insert($data);
return redirect(route('admin.banners.small.index'));
}
public function small_edit($id)
{
$small = DB::table('small_banner')->where('id', $id)->first();
return view('admin.banners.small.edit', compact('small'));
}
public function small_update(Request $request, $id)
{
$small = DB::table('small_banner')->where('id', $id)->first();
if ($request->has('image')) {
if (file_exists($small->image)) {
unlink($small->image);
}
DB::table('small_banner')->where('id', $id)->update([
'image' => $request['image']
]);
}
DB::table('small_banner')->where('id', $id)->update([
'title' => $request['title'],
'url' => $request['url'],
'image_title' => $request['image_title'],
'image_alt' => $request['image_alt']
]);
return redirect(route('admin.banners.small.index'));
}
public function small_delete($id)
{
$small = DB::table('small_banner')->where('id', $id)->first();
DB::table('small_banner')->where('id', $id)->delete();
if (file_exists($small->image)) {
unlink($small->image);
}
return redirect(route('admin.banners.small.index'));
}
}
其他控制器类似于 SmallController
这就是我展示横幅的方式:
@foreach($smallBanners as $small)
<div class="col-6 col-lg-3">
<div class="widget-banner card">
<a href="{{ $small->url }}" target="_blank" rel="noopener">
<img class="img-fluid w-100" loading="lazy"
src="{{ $small->image }}" title="{{ $small->title }}"
alt="{{ $small->image_alt }}" width="350" height="200">
</a>
</div>
</div>
@endforeach
其他视图,如小横幅。
但在这种情况下,例如在小横幅中,如果我们上传 5 张图片而不是 4 张图片,则结构会混乱。
管理此横幅和优化代码的最佳方法是什么?
【问题讨论】:
-
如果您的横幅模板仅针对 4 个横幅进行了优化,您可以将服务器返回的数据列表限制为数据库中随机的 4 个横幅
-
但我不想返回 4 个随机横幅,我需要正好 4 个横幅@AlzafanChristian