Symfony Controller - Как вернуть XML-ответ?

Я хочу вернуться в свой RandomController::indexAction() ответ XML:

return new Response($this->renderView(
    'AcmeRandomBundle:Random:index.xml.twig',
    array(
        'randomParameter' => $randomParameter
    )
));

где index.xml.twig выглядит следующим образом:

<?xml version="1.0" encoding="UTF-8"?>
<randomTag>
    {{ randomParameter }}
</randomTag>

Когда я хочу открыть это действие в firefox, я попал в firebug:

<html>
   <body>
    <randomTag>
        randomValue
    </randomTag>
   </body>
</html>

Как вернуть правильный ответ XML?

Ответы

Ответ 1

Попробуйте добавить правильный заголовок объекта ответа, например:

$response->headers->set('Content-Type', 'xml');

В противном случае добавьте правильную аннотацию (defaults) в свой метод контроллера, например, в этом примере:

 /**
  * @Route("/hello/{name}", defaults={"_format"="xml"}, name="_demo_hello")
  * @Template()
  */
  public function helloAction($name)
  {
     return array('name' => $name);
  }

Посмотрите руководство для дальнейшего объяснения