Symfony Controller - How to return XML response?
Try adding correct header on the Response Object like:
$response->headers->set('Content-Type', 'text/xml');
Otherwise add the correct annotation (defaults
) on your Controller method like this example:
/** * @Route("/hello/{name}", defaults={"_format"="xml"}, name="_demo_hello") * @Template() */ public function helloAction($name) { return array('name' => $name); }
If you have many XmlResponse to return, consider creating your own Response object:
<?phpnamespace App\Component\HttpFoundation;use Symfony\Component\HttpFoundation\Response;class XmlResponse extends Response{ public function __construct(?string $content = '', int $status = 200, array $headers = []) { parent::__construct($content, $status, array_merge($headers, [ 'Content-Type' => 'text/xml', ])); }}
You can then return new XmlResponse($xmlBody);
in your controllers.