如何使用Symfony 2和3返回xml或json响应

要在symfony控制器中返回xml响应, 我们需要在控制器中使用Response组件, 然后我们将更改响应的标头以在其上发送特定格式(在这种情况下为xml)。

namespace ourcodeworld\mybundleBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class myClass extends Controller{    public function xmlresponseAction(){            $xml = '< ?xml version="1.0" encoding="UTF-8"?> < urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9 http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd"> ';             $xml .= '< mynode> < content> Hello< /content> < /mynode> ';             $response = new Response($xml);       $response-> headers-> set('Content-Type', 'xml');                 return $response;     }}

你可以根据需要使用simplexmlelement php函数创建xml节点, 或获取树枝视图的内容。
对于symfony> 2.5的版本, 你可以使用以下代码在控制器中返回json响应, 只需包含JsonResponse类并将其作为普通响应返回即可。
namespace ourcodeworld\mybundleBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\JsonResponse; class myClass extends Controller{    public function jsonresponseAction(){            $myresponse = array(                'success' => true,                 'content' => array(                'main_content' => 'A long string',                   'secondary_content' => 'another string'                )            );                 return new JsonResponse($myresponse);     }}

如果你使用的是较低版本的symfony, 则可以改用以下代码:
namespace ourcodeworld\mybundleBundle\Controller; use Symfony\Bundle\FrameworkBundle\Controller\Controller; use Symfony\Component\HttpFoundation\Response; class myClass extends Controller{    public function jsonresponseAction(){            $myresponse = array(                'success' => true,                 'content' => array(                'main_content' => 'A long string',                   'secondary_content' => 'another string'                )            );             $finalResponse = json_encode($myresponse);                 $response = new Response($finalResponse);       $response-> headers-> set('Content-Type', 'application/json');                 return $response;     }}

【如何使用Symfony 2和3返回xml或json响应】玩得开心 !

    推荐阅读