前面已经实现在管理后台的项目管理,现在来实现管理后台的项目里程碑管理。
添加路由
修改后台路由 app/Admin/routes.php
文件,添加如下路由:
$router->resource('milestones', 'MilestonesController');
控制器
使用代码生成器生成 MilestonesController.php
控制器文件。
1. 里程碑列表
在 MilestonesController
控制器中,grid
方法对应的是项目列表,修改 grid
方法:
protected function grid()
{
return Grid::make(Milestone::with(['project']), function (Grid $grid) {
$grid->column('id')->sortable();
$grid->column('title');
$grid->column('project.name','项目');
$grid->column('created_at')->sortable();
$grid->filter(function (Grid\Filter $filter) {
$filter->equal('id');
$filter->like('title');
});
});
}
上面代码中,使用 image
方法显示图片,设置高和宽为 40。
修改Milestone
模型,引入 HasDateTimeFormatter
解决时间显示不对的问题:
<?php namespace App\Models;
use Dcat\Admin\Traits\HasDateTimeFormatter;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;
class Milestone extends Model
{
use HasFactory;
use HasDateTimeFormatter;
public function project(){
return $this->belongsTo(Project::class);
}
}
2. 添加和编辑里程碑
在 MilestonesController
控制器中,form
方法对应的是添加和编辑里程碑,修改form
方法为如下内容:
protected function form()
{
$projects = Project::pluck('name','id');
return Form::make(new Milestone(), function (Form $form) use($projects) {
$form->display('id');
$form->select('project_id')->options($projects);
$form->text('title');
$form->text('content');
$form->display('created_at');
$form->display('updated_at');
});
}
添加菜单
为了方便管理,打开菜单,在内容管理菜单下面添加一个里程碑管理菜单。