XML
Чтобы вернуть xml-ответ в контроллере Symfony, нам нужно использовать компонент 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 .= 'Hello';
$response = new Response($xml);
$response->headers->set('Content-Type', 'xml');
return $response;
}
}
Вы можете использовать функцию php simplexmlelement, чтобы создать свой xml-узел в соответствии с вашими потребностями или получить содержимое представления ветки.
JSON
С версией 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;
}
}
Повеселись !