chunkwan / workflow-reviser
Symfony Workflow transition Guard rules
Installs: 19
Dependents: 0
Suggesters: 0
Security: 0
Stars: 2
Watchers: 1
Forks: 1
Open Issues: 0
Type:symfony-bundle
Requires
- php: >=7.2.5
- ext-ctype: *
- ext-iconv: *
- symfony/framework-bundle: 5.2.*
- symfony/orm-pack: ^2.0
- symfony/workflow: ^5.2
Requires (Dev)
- friendsofphp/php-cs-fixer: ^2.17
- phpunit/phpunit: ^9.5
- symfony/phpunit-bridge: ^5.2
README
The WorkflowReviser integrates simple transition conditions into the Symfony Workflow component. This means easy-to-implement and feature-rich transition checks in your Symfony application!
Example:
// config/packages/workflow.php // Reknil\WorkflowReviser\Component\TransitionRule\CountEqual; // Reknil\WorkflowReviser\Component\TransitionRule\NotNull; // Reknil\WorkflowReviser\Component\WorkflowReviser; $container->loadFromExtension('framework', [ // ... 'workflows' => [ 'blog_publishing' => [ 'supports' => [BlogPost::class], // ... 'places' => [ 'draft', 'reviewed', 'rejected', 'published', ], 'transitions' => [ 'to_review' => [ 'from' => 'draft', 'to' => 'review', 'metadata' => [ # The transition is allowed only if the all check is success: # Title and Short Description is filled - NotNull # Quantity of images for post equal two - CountEqual # Comments for post more then 5 - CountMore WorkflowReviser::class => [ NotNull::class => [ // you can pass one or more property (field) of entity class 'title' => "Title cannot be blank", 'shortDescription' => "Short Description must be filled", ], CountEqual::class => [ 'images' => [2, ' Quantity of images for post must be two'], ], CountMore::class => [ 'comments' => [5, ' Comments for post must be more then 5'], ], ], ], ], // ... ], ], ], ]);
TransitionRule List:
DateTime:
// ... DateTimeEqual::class => [ 'createdAt' => [new \DateTime('2020-12-15T15:03:00'), 'Datetime must be equal!'], ], DateTimeUntil::class => [ 'createdAt' => [new \DateTime('2020-12-15T15:03:00'), 'Datetime must be untill!'], ], DateTimeBefore::class => [ 'createdAt' => [new \DateTime('2020-12-15T15:03:00'), 'Datetime must be before!'], ], // ...