集成 Symfony Workflow 组件
如果您正在使用 Symfony Workflow 组件 并且希望将其与 Sonata 一起使用,则有一个第三方库提供工具包类。
下载程序包
1
composer require yokai/sonata-workflow
用法
假设我们有一个 BlogPost
实体,它在 Symfony 工作流下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
# config/packages/workflow.yaml
framework:
workflows:
blog_post:
type: state_machine
marking_store:
type: single_state
arguments:
- status
supports:
- App\Entity\BlogPost
places:
- draft
- pending_review
- pending_update
- published
initial_place: draft
transitions:
start_review:
from: draft
to: pending_review
interrupt_review:
from: pending_review
to: pending_update
restart_review:
from: pending_update
to: pending_review
publish:
from: pending_review
to: published
您可以使用提供的扩展来处理您的实体管理。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# config/packages/sonata_admin.yaml
services:
app.admin.blog_post:
class: App\Admin\BlogPostAdmin
tags:
- { name: sonata.admin, model_class: App\Entity\BlogPost, controller: Yokai\SonataWorkflow\Controller\WorkflowController, manager_type: orm }
app.admin.extension.workflow.blog_post:
class: Yokai\SonataWorkflow\Admin\Extension\WorkflowExtension
arguments:
- '@workflow.registry'
- transitions_icons:
start_review: fas fa-question
interrupt_review: fas fa-edit
restart_review: fas fa-question
publish: fas fa-check
1 2 3 4 5 6 7
# config/packages/sonata_admin.yaml
sonata_admin:
extensions:
admin.extension.workflow.blog_post:
admins:
- app.admin.blog_post
一切就绪。如果您在编辑或显示模式下访问您的管理页面,您将看到类似这样的内容

本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。