Skip to content

Commit aece722

Browse files
committed
Merge branch '5.4' into 6.4
* 5.4: [Workflow] Add type information for multiple state marking store
2 parents 08363f0 + 85268b4 commit aece722

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

workflow.rst

+35
Original file line numberDiff line numberDiff line change
@@ -289,6 +289,41 @@ what actions are allowed on a blog post::
289289
// See a specific available transition for the post in the current state
290290
$transition = $workflow->getEnabledTransition($post, 'publish');
291291

292+
Using a multiple state marking store
293+
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
294+
295+
If you are creating a :doc:`workflow </workflow/workflow-and-state-machine>`,
296+
your marking store may need to contain multiple places at the same time. That's why,
297+
if you are using Doctrine, the matching column definition should use the type ``json``::
298+
299+
// src/Entity/BlogPost.php
300+
namespace App\Entity;
301+
302+
use Doctrine\DBAL\Types\Types;
303+
use Doctrine\ORM\Mapping as ORM;
304+
305+
#[ORM\Entity]
306+
class BlogPost
307+
{
308+
#[ORM\Id]
309+
#[ORM\GeneratedValue]
310+
#[ORM\Column]
311+
private int $id;
312+
313+
#[ORM\Column(type: Types::JSON)]
314+
private array $currentPlaces;
315+
316+
// ...
317+
}
318+
319+
.. caution::
320+
321+
You should not use the type ``simple_array`` for your marking store. Inside
322+
a multiple state marking store, places are stored as keys with a value of one,
323+
such as ``['draft' => 1]``. If the marking store contains only one place,
324+
this Doctrine type will store its value only as a string, resulting in the
325+
loss of the object's current place.
326+
292327
Accessing the Workflow in a Class
293328
---------------------------------
294329

0 commit comments

Comments
 (0)