Как вывести XML в Symfony? - PullRequest
       6

Как вывести XML в Symfony?

2 голосов
/ 29 марта 2011

У меня есть простые выходные данные в массиве:

$result = array ('status'=>true, 'message'=>"123123");

Я хотел бы вывести это в формате xml.Каков наилучший способ сделать это в Symfony?

Я знаю, я могу вручную поместить в строку, как это:

return $this->renderText('<xml><status>true</status><message>123123</message></xml>');

Но я ищу что-то гораздо проще.похож на json_encode ();: -)

Ответы [ 2 ]

9 голосов
/ 29 марта 2011

Я думаю, что лучше всего использовать шаблон с желаемым форматом (а не простым).Таким образом, вы можете легко изменить формат, если это необходимо, и его не нужно привязывать к одной реализации.Также, используя маршруты, выполнив только одно действие, вы можете автоматически определить, какой шаблон использовать.Например, при использовании маршрута типа:

jobs:
  url: /api/jobs.:sf_format
  param: { module: api, action: list }
  requirements:
    sf_format: (?:xml|json|yaml)

при доступе по / api / jobs.xml будет использоваться listSuccess.xml.php , по /api/jobs.json listSuccess.json.php и / api / jobs.yaml listSuccess.yaml.php .Создание для каждого шаблона типа

<!-- apps/frontend/modules/api/templates/listSuccess.xml.php -->
<?xml version="1.0" encoding="utf-8"?>
<jobs>
<?php foreach ($jobs as $url => $job): ?>
  <job url="<?php echo $url ?>">
<?php foreach ($job as $key => $value): ?>
    <<?php echo $key ?>><?php echo $value ?></<?php echo $key ?>>
<?php endforeach ?>
  </job>
<?php endforeach ?>
</jobs>

Вам нужно только правильно выполнить запрос к действию списка :) Таким образом, вам нужно немного кодировать, но вы можете изменить формат, если хотите и иметьумножает вывод (например, xml, json, yaml и т. д.), просто создав правильный шаблон.Используя эту идею, я создал общий сервис REST, и теперь мне остается только выполнить запрос.Это резюме Пример веб-служб Jobeet , для более подробной информации проверьте это.

1 голос
/ 29 марта 2011

В зависимости от сложности вашего вывода XML, вам определенно следует использовать библиотеки PHP XML . В противном случае это своего рода шизофренический подход - использовать среду полного стека, но реализовать часть XML самостоятельно. ;-) В остальном я буду придерживаться ответа Паблокса. Вы должны использовать переключатель sf_format.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...