111 lines
3.1 KiB
PHP
111 lines
3.1 KiB
PHP
<?php
|
|
|
|
namespace App\Admin\Controllers;
|
|
|
|
use App\Models\Advert;
|
|
use Illuminate\Http\Request;
|
|
use Validator;
|
|
|
|
/**
|
|
* 轮播管理,基本完成
|
|
*/
|
|
class AdvertController extends Controller
|
|
{
|
|
protected $models = [
|
|
'Article' => '资讯模型',
|
|
'Goods' => '商品模型',
|
|
];
|
|
|
|
public function index(Request $request)
|
|
{
|
|
$orderField = $request->orderField;
|
|
$orderDirection = $request->orderDirection;
|
|
$numPerPage = $request->numPerPage ?: 30;
|
|
$model = $request->model;
|
|
|
|
$adverts = Advert::when($orderField, function ($query) use ($orderField, $orderDirection) {
|
|
$query->orderBy($orderField, $orderDirection);
|
|
})
|
|
->when($model, function ($query) use ($model) {
|
|
$query->where('advertable_type', 'like', "%{$model}%");
|
|
})
|
|
->paginate($numPerPage);
|
|
|
|
return view('Admin::adverts.index', compact('adverts'));
|
|
}
|
|
|
|
public function create()
|
|
{
|
|
$models = $this->models;
|
|
return view('Admin::adverts.create', compact('models'));
|
|
}
|
|
|
|
public function store(Request $request)
|
|
{
|
|
|
|
$validator = Validator::make($request->all(), [
|
|
'sort' => 'required|numeric',
|
|
'storage_id' => 'required',
|
|
], [
|
|
'sort.required' => '排序必须填写',
|
|
'sort.numeric' => '排序只能是数字',
|
|
'url.required' => 'url必须填写',
|
|
'url.url' => 'url格式不正确',
|
|
'storage_id.required' => '图片必须上传',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return $this->error($validator->errors()->first());
|
|
}
|
|
|
|
Advert::create([
|
|
'storage_id' => $request->storage_id,
|
|
'sort' => $request->sort,
|
|
'url' => $request->url,
|
|
]);
|
|
|
|
return $this->success('轮播创建成功', 'close');
|
|
}
|
|
|
|
public function edit(Advert $advert)
|
|
{
|
|
$models = $this->models;
|
|
return view('Admin::adverts.edit', compact('models', 'advert'));
|
|
}
|
|
|
|
public function update(Request $request, Advert $advert)
|
|
{
|
|
$validator = Validator::make($request->all(), [
|
|
'sort' => 'required|numeric',
|
|
'storage_id' => 'required',
|
|
], [
|
|
'sort.required' => '排序必须填写',
|
|
'sort.numeric' => '排序只能是数字',
|
|
'url.required' => 'url必须填写',
|
|
'url.url' => 'url格式不正确',
|
|
'storage_id.required' => '图片必须上传',
|
|
]);
|
|
|
|
if ($validator->fails()) {
|
|
return $this->error($validator->errors()->first());
|
|
}
|
|
|
|
$advert->update([
|
|
'storage_id' => $request->storage_id,
|
|
'sort' => $request->sort,
|
|
'url' => $request->url,
|
|
]);
|
|
|
|
return $this->success('轮播更新成功', 'close');
|
|
}
|
|
|
|
public function destroy(Advert $advert)
|
|
{
|
|
if ($advert->delete()) {
|
|
return $this->success();
|
|
} else {
|
|
return $this->error();
|
|
}
|
|
}
|
|
}
|