diff --git a/components/workflow.rst b/components/workflow.rst index a35602f1ac2..f27e55ca2d3 100644 --- a/components/workflow.rst +++ b/components/workflow.rst @@ -94,6 +94,16 @@ you can retrieve a workflow from it and use it as follows:: $workflow->can($blogPost, 'publish'); // True $workflow->getEnabledTransitions($blogPost); // $blogPost can perform transition "publish" or "reject" +If you want to initiate your workflow, you can simply call ``getMarking``:: + + // ... + $blogPost = new BlogPost(); + $workflow = $registry->get($blogPost); + + // initiate workflow + $workflow->getMarking($blogPost); + + Learn more ---------- diff --git a/workflow.rst b/workflow.rst index 376996534ba..34deac2ad9e 100644 --- a/workflow.rst +++ b/workflow.rst @@ -356,11 +356,26 @@ order: The ``Workflow::DISABLE_ANNOUNCE_EVENT`` constant was introduced in Symfony 5.1. + .. versionadded:: 5.2 + + The context will be accessible in all the events:: + + // $context must be an array + $context = ['context']; + $workflow->apply($subject, $transitionName, $context); + + // in an event listener + $context = $event->getContext(); // returns ['context'] + .. note:: The leaving and entering events are triggered even for transitions that stay in same place. +.. note:: + + If you initialize the marking by calling ``$workflow->getMarking($object);``, then the ``workflow.[workflow name].entered.[initial place name]`` will be called with a default context ``Workflow::DEFAULT_INITIAL_CONTEXT`` + Here is an example of how to enable logging for every time a "blog_publishing" workflow leaves a place::