2014-10-08 46 views
14

我想在我的RandomController::indexAction()返回XML響應:Symfony Controller - 如何返回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中打開這個動作,我得到的螢火:

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

如何返回正確的XML響應?

+0

怎麼辦你建立'$ randomParameter'? – COil 2014-10-08 09:52:10

+0

這是完全隨機隨機隨機字符串,例如$ randomParameter =「randomParameter」:P我認爲這不是問題;) – user3766478 2014-10-09 07:57:48

+0

但我不明白爲什麼'randomParameter'仍然未被Twig轉譯。它應該工作,即使響應不是XML而是HTML。 – COil 2014-10-09 20:00:47

回答

36

嘗試,如響應對象添加正確的標題:

$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); 
    } 

Look at the guide for further explaination

+1

我用第一,它運作良好,所以謝謝:) – user3766478 2014-10-09 07:55:18

+0

嗨@ user3766478請考慮upvote我的答案,如果你覺得它有用 – Matteo 2015-01-22 08:38:02

+1

我從來沒有新的_format屬性的默認值 - 我總是不得不取消註釋之前的模板,因爲我需要使用響應對象。感謝您指出! – 2016-01-20 23:38:20