Integrate Symfony Workflow Component
If you are using Symfony Workflow Component and if you wish to use it with Sonata, there is a 3rd party library that provides toolkit classes.
Download the Bundle
1
composer require yokai/sonata-workflow
Usage
Let's say we have a BlogPost
entity that is under a Symfony workflow:
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
You can use the provided extension to take care of your entity admin.
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
You are all set. If you visit your admin page in edit or show mode, you will see something like this:
This work, including the code samples, is licensed under a
Creative Commons BY-SA 3.0
license.