diff --git a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java index 2a3c2ffef01d..db559d3c6685 100644 --- a/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java +++ b/modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/PhpSymfonyServerCodegen.java @@ -417,10 +417,16 @@ public OperationsMap postProcessOperationsWithModels(OperationsMap objs, List produce : op.produces) { + String mediaType = produce.get("mediaType"); + if (isJsonMimeType(mediaType) || isXmlMimeType(mediaType)) { + return true; + } + } + } + return false; + } + @Override public ModelsMap postProcessModels(ModelsMap objs) { objs = super.postProcessModels(objs); diff --git a/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache b/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache index 023b66c90f7d..1c3288d813bb 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/Controller.mustache @@ -204,6 +204,10 @@ class Controller extends AbstractController return 'application/xml'; } + if (in_array('*/*', $accept)) { + return $produced[0]; + } + // If we reach this point, we don't have a common ground between server and client return null; } diff --git a/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache b/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache index 9dfabc9733a3..6c93e947f425 100644 --- a/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache +++ b/modules/openapi-generator/src/main/resources/php-symfony/serialization/JmsSerializer.mustache @@ -29,7 +29,13 @@ class JmsSerializer implements SerializerInterface */ public function serialize($data, string $format): string { - return SerializerBuilder::create()->build()->serialize($data, $this->convertFormat($format)); + $convertFormat = $this->convertFormat($format); + if ($convertFormat !== null) { + return SerializerBuilder::create()->build()->serialize($data, $convertFormat); + } else { + // don't use var_export if $data is already a string: it may corrupt binary strings + return is_string($data) ? $data : var_export($data, true); + } } /** diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/Controller.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/Controller.php index e21a2f138131..7d2600dbb6e7 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/Controller.php +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Controller/Controller.php @@ -214,6 +214,10 @@ protected function getOutputFormat(string $accept, array $produced): ?string return 'application/xml'; } + if (in_array('*/*', $accept)) { + return $produced[0]; + } + // If we reach this point, we don't have a common ground between server and client return null; } diff --git a/samples/server/petstore/php-symfony/SymfonyBundle-php/Service/JmsSerializer.php b/samples/server/petstore/php-symfony/SymfonyBundle-php/Service/JmsSerializer.php index 5abbc6de3fb9..234056cf41d5 100644 --- a/samples/server/petstore/php-symfony/SymfonyBundle-php/Service/JmsSerializer.php +++ b/samples/server/petstore/php-symfony/SymfonyBundle-php/Service/JmsSerializer.php @@ -29,7 +29,13 @@ public function __construct() */ public function serialize($data, string $format): string { - return SerializerBuilder::create()->build()->serialize($data, $this->convertFormat($format)); + $convertFormat = $this->convertFormat($format); + if ($convertFormat !== null) { + return SerializerBuilder::create()->build()->serialize($data, $convertFormat); + } else { + // don't use var_export if $data is already a string: it may corrupt binary strings + return is_string($data) ? $data : var_export($data, true); + } } /**