2013-06-18 24 views
0

我正在構建一個以多種格式呈現內容的web服務,基本上是json,xml和html(僅用於測試,不用擔心)。枝 - 呈現帶有循環的xml內容(甚至是空的內容)

JSON和HTML渲染工作正常,我剛剛在我的實體中添加了「toArray()」方法以呈現它。 (我想/希望它是最好的/唯一的方式,至少JSON導出?!)

但我有一些關於XML渲染的麻煩。 (我很抱歉,但我討厭那種語言,通常不會用它來輸出數據,但它似乎是這個項目的一個要求。)我調用一個視圖,例如命名爲MyBundle:MyController:myView.xml .twig,並得到了我無法修復的錯誤...

此頁面包含以下錯誤:第1欄第2行

錯誤:在文檔的末尾附加內容

下面是頁面渲染到第一個錯誤。

我在Google上搜索過它,它似乎是一個通常的XML解析錯誤,但我不知道是什麼原因!

幾行代碼更多信息...

我的routing.yml路由器文件:

# Prefixed by /api 
# The final route will looks like /api/bookings.{_format} 
my_bundle_bookingpage: 
    pattern: /bookings.{_format} 
    defaults: { _controller: MyBundle:Bookings:index, _format: json } 
    requirements: 
     _format: json|xml|html 
     _method: 'get' 

我BookingsController.php:

<?php 

namespace My\Bundle\Controller; 

class BookingsController extends RestController 
{ 
    public function indexAction() 
    { 
     $request = $this->getRequest(); 
     $em = $this->getDoctrine()->getEntityManager(); 

     $bookings = $em->getRepository('MyCoreBundle:Booking')->findAll(); 

     $parameters = array(
      'bookings' => $bookings 
     ); 

     switch ($request->get('_format')) { 
      case 'html': 
      case 'xml': 
       return $this->render('MyBundle:Bookings:index.'.$request->get('_format').'.twig', $parameters); 
       break; 
      default: 
       foreach ($parameters['bookings'] as &$booking) { 
        $booking = $booking->toArray(); 
       } 
       return $this->generateJsonResponse($parameters, 200); 
       break; 
     } 
    } 
} 

而且RestController,只是提供簡單的JsonResponse方法:

<?php 

namespace My\Bundle\Controller; 

use Symfony\Bundle\FrameworkBundle\Controller\Controller; 
use Symfony\Component\HttpFoundation\Request; 
use Symfony\Component\HttpFoundation\Response; 
use Symfony\Component\HttpFoundation\JsonResponse; 

class RestController extends Controller 
{ 
    public function generateJsonResponse($content = array(), $status = 200) 
    { 
     $response = new JsonResponse($content, $status); 

     return $response; 
    } 
} 

最後,myView.xml:

<bookings> 
    {% for booking in bookings %} 
     <booking> 
      <id>{{ booking.id }}</id> 
      <created>{{ booking.createdAt }}</created> 
      <updated>{{ booking.updatedAt }}</updated> 
      <name>{{ booking.name }}</name> 
      <date>{{ booking.datetime }}</date> 
      <notes>{{ booking.notes }}</notes> 
      <persons>{{ booking.persons }}</persons> 
     </booking> 
    {% endfor %} 
</bookings> 
+3

你有沒有嘗試添加''?你的錯誤在哪裏出現?在樹枝渲染過程中?或者如果您在生成後手動查看文件?輸出結果如何? – ferdynator

+0

對不起,我沒有說,但它不會改變任何東西,即使這條XML線是存在與否。 –

回答