Skip to content

Upgrade symfony/framework-bundle 6.4.4 => 6.4.6 broke BackedEnum item serialization #6279

Closed
symfony/symfony
#54484
@ambroisemaupate

Description

@ambroisemaupate
  • Api Platform Core version: 3.2.19
  • Symfony packages version: 6.4.6

After packages upgrade (Symfony and Api PLatform) all Enums resource serialization broke leading in
Expected normalized relation to be an IRI, array, \\ArrayObject or null error for relations with Enum normalization.

I don't know if it's related to Api Platform or Symfony?
Maybe related to #6264

Resource

#[
    ApiResource(normalizationContext: ['groups' => ['get']]),
    GetCollection(provider: Availability::class . '::getCases'),
    Get(provider: Availability::class . '::getCase')
]
enum Availability: int
{
    case AVAILABLE = 0;
    case LAST_SEATS = 10;
    case NO_VACANCY = 20;
    case CANCELLED = 30;
    case POSTPONED = 40;
    case PROGRAMMING_IN_PROGRESS = 50;
    case PARTNER_SHOP_ONLY = 60;

    public static function values(): array
    {
        return array_map(
            fn (Availability $feature) => $feature->value,
            self::cases()
        );
    }

    public function getId(): string
    {
        return $this->name;
    }

    #[
        Groups(['get'])
    ]
    public function getValue(): int
    {
        return $this->value;
    }

    public static function getCases(): array
    {
        return self::cases();
    }

    public static function getCase(Operation $operation, array $uriVariables): ?self
    {
        return self::tryFrom((int) $uriVariables['id']);
    }
}

Symptoms:

Enum operations do not output Enum normalized objects anymore, but their raw value.

  • Before upgrade:
    image

  • After upgrade:
    image

- Upgrading php-http/discovery (1.19.2 => 1.19.4): Extracting archive
- Upgrading symfony/translation-contracts (v3.4.1 => v3.4.2): Extracting archive
- Upgrading symfony/serializer (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/property-info (v6.4.3 => v6.4.6): Extracting archive
- Upgrading symfony/property-access (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/event-dispatcher-contracts (v2.5.2 => v2.5.3): Extracting archive
- Upgrading symfony/var-dumper (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/error-handler (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/http-kernel (v6.4.5 => v6.4.6): Extracting archive
- Upgrading api-platform/core (v3.2.18 => v3.2.19): Extracting archive
- Upgrading symfony/service-contracts (v3.4.1 => v3.4.2): Extracting archive
- Upgrading symfony/console (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/routing (v6.4.5 => v6.4.6): Extracting archive
- Upgrading symfony/filesystem (v6.4.3 => v6.4.6): Extracting archive
- Upgrading symfony/var-exporter (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/dependency-injection (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/config (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/cache-contracts (v3.4.0 => v3.4.2): Extracting archive
- Upgrading symfony/cache (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/framework-bundle (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/doctrine-bridge (v6.4.5 => v6.4.6): Extracting archive
- Upgrading symfony/security-bundle (v6.4.5 => v6.4.6): Extracting archive
- Upgrading phpstan/phpstan (1.10.65 => 1.10.66): Extracting archive
- Upgrading symfony/mime (v6.4.3 => v6.4.6): Extracting archive
- Upgrading symfony/validator (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/form (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/twig-bridge (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/proxy-manager-bridge (v6.4.3 => v6.4.6): Extracting archive
- Upgrading symfony/messenger (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/mailer (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/lock (v6.4.3 => v6.4.6): Extracting archive
- Upgrading symfony/http-client-contracts (v3.4.0 => v3.4.2): Extracting archive
- Upgrading symfony/http-client (v6.4.5 => v6.4.6): Extracting archive
- Upgrading symfony/psr-http-message-bridge (v6.4.3 => v6.4.6): Extracting archive
- Upgrading squizlabs/php_codesniffer (3.9.0 => 3.9.1): Extracting archive
- Upgrading symfony/doctrine-messenger (v6.4.4 => v6.4.6): Extracting archive
- Upgrading symfony/phpunit-bridge (v6.4.4 => v6.4.6): Extracting archive

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions