Я создаю веб-сервис, который отображает контент в нескольких форматах, в основном json, xml и html (для тестирования только, не беспокойтесь об этом).twig-render xml content with loop (даже пустой контент)
JSON и HTML-рендеринги отлично работают, я только что добавил метод toArray() в своих объектах для его рендеринга. (я думаю/надеюсь, что это лучший/единственный способ, для экспорта JSON хотя бы?!)
Но у меня есть некоторые проблемы с рендерингом XML. (Я прошу прощения, но я ненавижу этот язык и обычно не использую его для экспорта данных, но, похоже, это требование для этого проекта.) Я вызываю вид, названный, например, MyBundle: MyController: myView.xml .twig, и получил сообщение об ошибке, что я не могу исправить ...
Эта страница содержит следующие ошибки:
ошибку на линии 2 в колонке 1: Дополнительное содержание в конце документа
Ниже представлена рендеринг страницы до первой ошибки.
Я искал об этом в 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 присутствует или нет. –