博客

10分钟内 将工作流添加到Filament 后台面板中

Jul 4, 2022
Martin
Admin panel, Table builder, Form builder

安装

  1. 新建 Laravel
laravel new MyProject
  1. 安装包
composer require heloufir/filament-workflow-manager
  1. config/app.php 中注册
\Heloufir\FilamentWorkflowManager\FilamentWorkflowManagerServiceProvider::class,
  1. 运行 migration
php artisan migrate
  1. 新建 Filament 用户(查看文档) https://filamentphp.com/docs/2.x/admin/installation#installation

  2. 启动服务

php artisan serve

这样你就可以在设置菜单分组中看到一个名为工作流(Workflows)的菜单,你可以在此处管理工作流。

配置

  1. 新建模型
php artisan make:model MyModel
  1. 配置让模型实现工作流管理
use Heloufir\FilamentWorkflowManager\Core\HasWorkflow;
use Heloufir\FilamentWorkflowManager\Core\InteractsWithWorkflows;
// ...
 
class Project extends Model implements HasWorkflow
{
use InteractsWithWorkflows;
 
// ...
}

此处要添加 HasWorkflow 接口实现,将 InteractsWithWorkflows trait 添加到模型中.

  1. 创建工作流 配置好模型后,你就可以创建工作流添加到模型当中,查看以下示例视频:
  1. 添加 Filament 资源来管理模型,查看 Filament 文档: https://filamentphp.com/docs/2.x/admin/resources/getting-started#创建资源

  2. 配置 Filament 资源

在你的 Filament 资源的 form 定义中,你需要添加 WorkflowStatusInput::make(),这样用户才可以根据工作流配置修改模型状态:

use Heloufir\FilamentWorkflowManager\Forms\Components\WorkflowStatusInput;
 
public static function form(Form $form): Form
{
return $form
->schema([
// ...
 
WorkflowStatusInput::make()
]);
}

如果你想在 Filament 资源表格中显示当前模型状态,你需要在表格定义中添加 WorkflowStatusColumn::make():

use Heloufir\FilamentWorkflowManager\Tables\Columns\WorkflowStatusColumn;
 
public static function table(Table $table): Table
{
return $table
->columns([
// ...
 
WorkflowStatusColumn::make()
]);
}

最后需要配置的是,在模型的 EditRecordCreateRecord 组件中添加 WorkflowResource trait。

EditRecord 组件

// ...
use Heloufir\FilamentWorkflowManager\Core\WorkflowResource;
 
class EditMyModel extends EditRecord
{
use WorkflowResource;
 
// ...
}

CreateRecord 组件

// ...
use Heloufir\FilamentWorkflowManager\Core\WorkflowResource;
 
class CreateMyModel extends CreateRecord
{
use WorkflowResource;
 
// ...
}