Documentação do Symfony2
Renderizada do repositório symfony-docs-pt-BR no Github
Todo Request possui um “formato” (e.g. html, json), que é usado para determinar o tipo de conteúdo a ser retornado pelo Response. Na verdade, o formato de requisição, acessível pelo método :method:`Symfony\\Component\\HttpFoundation\\Request::getRequestFormat`, é usado para definir o MIME type do cabeçalho Content-Type no objeto Response. Internamente, Symfony contém um mapa dos formatos mais comuns (e.g. html, json) e seus MIME types associados (e.g. text/html, application/json). Naturalmente, formatos adicionais de MIME type de entrada podem ser facilmente adicionados. Este documento irá mostrar como você pode adicionar o formato jsonp e seu MIME type correspondente.
A chave para definir um novo MIME type é criar uma classe que irá “ouvir” o evento kernel.request enviado pelo kernel do Symfony. O evento kernel.request é enviado no início no processo de manipulação da requisição Symfony e permite que você modifique o objeto da requisição.
Crie a seguinte classe, substituindo o caminho com um caminho para um pacote em seu projeto:
// src/Acme/DemoBundle/RequestListener.php
namespace Acme\DemoBundle;
use Symfony\Component\HttpKernel\HttpKernelInterface;
use Symfony\Component\HttpKernel\Event\GetResponseEvent;
class RequestListener
{
public function onKernelRequest(GetResponseEvent $event)
{
$event->getRequest()->setFormat('jsonp', 'application/javascript');
}
}
Como para qualquer outro listener, você precisa adicioná-lo em um arquivo de configuração e registrá-lo como um listerner adicionando a tag kernel.event_listener:
Neste ponto, o serviço acme.demobundle.listener.request foi configurado e será notificado quando o Symfony kernel enviar um evento kernel.request.
Tip
Você também pode registrar o ouvinte em uma classe de extensão de configuração (see Importando Configuração através de Extensões do Container para mais informações).