前面已经实现在管理后台的项目管理,现在来实现管理后台的项目里程碑管理。
修改后台路由 app/Admin/routes.php文件,添加如下路由:
$router->resource('milestones', 'MilestonesController');
使用代码生成器生成 MilestonesController.php 控制器文件。
在 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 解决时间显示不对的问题:
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);
}
}
在 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');
});
}
为了方便管理,打开菜单,在内容管理菜单下面添加一个里程碑管理菜单。