El único requisito para un controlador es que devuelva un objeto de tipo Response
. La clase Symfony\Component\HttpFoundation\Response
es una abstracción en PHP de la verdadera respuesta HTTP (que está formada por el contenido que se envía al usuario y las cabeceras HTTP adecuadas):
// crea una respuesta simple con un código de estado
// igual a 200 (el predeterminado)
$response = new Response('Hello '.$name, 200);
// crea una respuesta JSON con código de estado 200
$response = new Response(json_encode(array('name' => $name)));
$response->headers->set('Content-Type', 'application/json');
Truco La propiedad headers
es un objeto de tipo Symfony\Component\HttpFoundation\HeaderBag
, que contiene varios métodos útiles para lectura y modificación de las cabeceras del objeto Response
. Los nombres de las cabeceras se normalizan, para que no importe si utilizas Content-Type
, content-type
o incluso content_type
.
[tip] También existen varias clases especiales para simplificar algunos tipos de respuesta comunes:
- Para devolver respuestas en formato JSON, utiliza la clase
JsonResponse
. - Para servir archivos binarios, utiliza la clase
BinaryFileResponse
. [/tip]