一、轮播图管理
1.1 创建模型、控制器、路由、表单验证
1、创建轮播图模型和迁移文件 运行命令php artisan make:model Slide -m 
2、创建轮播图字段
Schema::create('slides', function (Blueprint $table) {
$table->id();
$table->string('title')->comment('轮播图名称');
$table->string('url')->nullable()->comment('轮播图跳转链接');
$table->string('img')->comment('轮播图图片');
$table->string('status')->default(0)->comment('状态:0禁用,1正常');
$table->integer('seq')->default(1)->comment('排序');
$table->timestamps();
});
 运行命令php artisan migrate 执行迁移生成表: 
3、创建轮播图控制器 运行命令php artisan make:controller Admin/SlideController --api 创建轮播图资源路由: 
4、创建轮播图路由
$api->resource('slides', SlideController::class);

5、创建轮播图表单验证 运行命令php artisan make:request Admin/SlideRequest 创建轮播图表单验证:  写入验证规则:
<?php
namespace App\Http\Requests\Admin;
use App\Http\Requests\BaseRequest;
class SlideRequest extends BaseRequest
{
public function rules()
{
return [
'title' => 'required',
'img' => 'required',
];
}
public function messages() {
return [
'title.required' => '标题必填',
'img.required' => '图片地址必填',
];
}
}
1.2 添加轮播图控制器方法
给轮播图模型增加可赋值的字段:
protected $fillable = ['title', 'url', 'img', 'status', 'seq'];

添加轮播图控制器方法:
public function store(SlideRequest $request)
{
$max_seq = Slide::max('seq') ?? 0;
$max_seq++;
$request->offsetSet('seq', $max_seq);
$slide = Slide::create($request->all());
return $this->response->created();
}

测试:  
1.3 轮播图列表控制器方法
创建轮播图SlideTransformer.php 写入如下代码:
<?php
namespace App\Transformers;
use App\Models\Slide;
use League\Fractal\TransformerAbstract;
class SlideTransformer extends TransformerAbstract {
public function transform(Slide $slide) {
return [
'id' => $slide->id,
'title' => $slide->title,
'url' => $slide->url,
'img' => $slide->img,
'img_url' => oss_url($slide->img),
'seq' => $slide->seq,
'status' => $slide->status,
'created_at' => $slide->created_at,
'updated_at' => $slide->updated_at,
];
}
}
轮播图控制器列表方法:
public function index()
{
$slides = Slide::paginate(1);
return $this->response->paginator($slides, new SlideTransformer());
}

1.4 轮播图详情控制器方法
public function show(Slide $slide)
{
return $this->response->item($slide, new SlideTransformer());
}

测试效果: 
1.5 轮播图更新控制器方法
public function update(SlideRequest $request, Slide $slide)
{
$slide->update($request->all());
return $this->response->noContent();
}

测试:  
1.6 轮播图删除控制器方法
public function destroy(Slide $slide)
{
$slide->delete();
return $this->response->noContent();
}

测试效果:  
1.7 轮播图排序
1、排序路由
$api->patch('slides/{slide}/seq', [ SlideController::class, 'seq']);

2、排序控制器方法
public function seq(Request $request, Slide $slide)
{
$slide->seq = $request->input('seq', 1);
$slide->save();
return $this->response->noContent();
}

3、测试效果   可以看到已经更新了。
在学习的php的路上,如果你觉得本文对你有所帮助的话,那就请关注点赞评论三连吧,谢谢,你的肯定是我写博的另一个支持。
|