我正在構建一個以多種格式呈現內容的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>
你有沒有嘗試添加''?你的錯誤在哪裏出現?在樹枝渲染過程中?或者如果您在生成後手動查看文件?輸出結果如何? –
ferdynator
對不起,我沒有說,但它不會改變任何東西,即使這條XML線是存在與否。 –