2014-10-08 19 views
14

Tôi muốn quay trở lại trong RandomController::indexAction() tôi một đáp ứng XML:Bộ điều khiển Symfony - Cách trả về phản hồi XML?

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

nơi index.xml.twig là như thế:

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

Khi tôi muốn mở hành động này trong firefox, tôi nhận được trong firebug:

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

Làm cách nào để trả lời đúng XML?

+0

thế nào bạn xây dựng '$ randomParameter'? – COil

+0

này là ngẫu nhiên ngẫu nhiên chuỗi ngẫu nhiên, ví dụ $ randomParameter = "randomParameter": P Tôi nghĩ rằng nó không quan trọng trong trường hợp này;) – user3766478

+0

Nhưng tôi không hiểu tại sao 'randomParameter' vẫn chưa được dịch bởi Twig. Nó sẽ làm việc ngay cả những phản ứng không phải là XML mà là HTML. – COil

Trả lời

36

Hãy thử thêm đúng tiêu đề trên đối tượng đáp ứng như:

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

Nếu không thêm chú thích chính xác (defaults) về phương pháp điều khiển của bạn như ví dụ sau:

/** 
    * @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

Tôi đã sử dụng số 1, và nó hoạt động tốt, vì vậy cảm ơn :) – user3766478

+0

Hi @ user3766478 xin vui lòng xem xét để upvote câu trả lời của tôi nếu bạn tìm thấy nó hữu ích – Matteo

+1

Tôi không bao giờ mới về tài sản _format mặc định - Tôi luôn luôn phải làm đi với chú thích mẫu trước vì tôi cần sử dụng đối tượng phản hồi. Cảm ơn đã chỉ ra điều đó! –

Các vấn đề liên quan