跳到内容

集成 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

一切就绪。如果您在编辑或显示模式下访问您的管理页面,您将看到类似这样的内容

Sonata Admin with Workflow
本作品,包括代码示例,根据 Creative Commons BY-SA 3.0 许可获得许可。
目录
    版本