Closed
Description
Description
Support for Value Objects like popular PhpEnum needed in workflow component. Since I got no response in #22031 comments and component's author suggested reopening the issue (which I can't do), I created this new feature request.
Example
Transaction.php:
<?php
namespace App\Entity;
use App\Entity\Enum\TransactionStatus;
use Doctrine\ORM\Mapping as ORM;
/**
* @ORM\Entity()
*/
class Transaction
{
/**
* @var int
*
* @ORM\Column(name="id", type="integer", nullable=false)
* @ORM\Id
* @ORM\GeneratedValue(strategy="IDENTITY")
*/
private $id;
/**
* @var TransactionStatus
*
* @ORM\Column(type=TransactionStatus::class, nullable=false)
*/
private $status;
public function getStatus(): TransactionStatus
{
return $this->status;
}
public function setStatus(TransactionStatus $status)
{
$this->status = $status;
}
}
TransactionStatus.php:
<?php
declare(strict_types=1);
namespace App\Entity\Enum;
use MyCLabs\Enum\Enum;
class TransactionStatus extends Enum
{
public const CREATED = 'created';
public const PENDING = 'pending';
public const COMPLETE = 'complete';
}
workflow.yaml
framework:
workflows:
transaction_state:
type: 'state_machine'
places:
- created
- pending
- complete
initial_place: created
marking_store:
type: "single_state"
arguments: ['status']
supports:
- App\Entity\Transaction
transitions:
initialize:
from: created
to: pending
complete:
from: pending
to: complete