如何在symfony中输出xml?

mur*_*lai 2 php xml arrays symfony1

我在数组中有简单的输出数据:

$result = array ('status'=>true, 'message'=>"123123");
Run Code Online (Sandbox Code Playgroud)

我想以xml格式输出.在symfony中这样做的最佳方法是什么?

我知道我可以像这样手动输入字符串:

return $this->renderText('<xml><status>true</status><message>123123</message></xml>');
Run Code Online (Sandbox Code Playgroud)

但我正在寻找更容易的东西.类似于json_encode(); :-)

Pab*_*oks 9

我认为最好的方法是使用具有所需格式的模板(而不是简单的模板).这样,您可以根据需要轻松更改格式,而无需附加到一个实现.此外,使用路由,只需一个操作即可自动定义必须使用的模板.例如,使用如下路线:

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

通过访问/api/jobs.xml将使用listSuccess.xml.php,通过/api/jobs.jsonlistSuccess.json.php/api/jobs.yamllistSuccess.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>
Run Code Online (Sandbox Code Playgroud)

你只需要对列表操作进行正确的查询:)这种方式你需要编写一点代码,但你可以改变格式,如果你想要并有多个输出(如xml,json,yaml等)只需通过制作适当的模板.使用这个想法我做了一个通用的REST服务,现在我只需要进行查询.这是Jobeet Web服务示例的简历,有关详细信息,请查看.