La clase Response: cómo devolver datos

La clase Response se utiliza para construir y enviar una respuesta HTTP al cliente. Permite establecer el código de estado HTTP, las cabeceras, las cookies y el contenido de la respuesta.

Fichero: Core/Response.php

Este objeto está disponible en todos los controladores, ya sea como propiedad o como método.

// controladores actuales
$this->response->json(['mis_datos' => '1234']);

// para los nuevos controladores
$this->response()->json(['mis_datos' => '1234']);

Constantes de Código de Estado HTTP

  • HTTP_OK (200)
  • HTTP_BAD_REQUEST (400)
  • HTTP_UNAUTHORIZED (401)
  • HTTP_FORBIDDEN (403)
  • HTTP_NOT_FOUND (404)
  • HTTP_METHOD_NOT_ALLOWED (405)
  • HTTP_INTERNAL_SERVER_ERROR (500)

Propiedades Públicas

  • $headers: Un objeto ResponseHeaders que gestiona las cabeceras de la respuesta.

Métodos Públicos

header(string $name, string $value): self

Establece una cabecera HTTP para la respuesta.

// método normal
$this->response->header('Content-Type', 'application/json');

// método alternativo
$this->response->headers->set('Content-Type', 'application/json');

setHttpCode(int $http_code): self

Establece el código de estado HTTP para la respuesta.

$this->response->setHttpCode(403);

getHttpCode(): int

Devuelve el código de estado HTTP de la respuesta.

$http_code = $this->response->getHttpCode();

setContent(string $content): self

Establece el contenido del cuerpo de la respuesta.

$this->response->setContent('Hola mundo');

getContent(): string

Devuelve el contenido actual de la respuesta.

$content = $this->response->getContent();

↪️ redirect(string $url, int $delay = 0): self

Prepara una redirección a otra URL. Pero no se envía.

  • $url: La URL a la que se va a redirigir.
  • $delay: Si es mayor que 0, usa la cabecera Refresh para una redirección retardada. Si no, usa Location para una redirección inmediata (código 302).
$this->response->redirect('Dashboard')->send();

🍪 cookie(string $name, string $value, int $expire = 0, bool $httpOnly = true, ?bool $secure = null, string $sameSite = 'Lax'): self

Añade una cookie a la respuesta.

  • $name: Nombre de la cookie.
  • $value: Valor de la cookie.
  • $expire: Timestamp de expiración. Si es 0, usa el valor de configuración cookies_expire.
  • $httpOnly: Si es true, la cookie solo será accesible a través del protocolo HTTP.
  • $secure: Si es true, la cookie solo se enviará sobre conexiones seguras (HTTPS). Si es null, se autodetecta.
  • $sameSite: Controla cuándo se envía la cookie (Lax, Strict, None).
// creo la cookie 'hola' con el valor 'mundo'
$this->response->cookie('hola', 'mundo');

🍪 withoutCookie(string $name): self

Indica al navegador que elimine una cookie estableciendo su tiempo de expiración en el pasado.

// elimino la cookie session
$this->response->withoutCookie('session');

json(array $data): void

Prepara y envía una respuesta en formato JSON. Establece la cabecera Content-Type a application/json.

$this->response->json(['hola' => 'mundo']);

view(string $view, array $data = []): void

Renderiza una vista de plantilla y la establece como contenido de la respuesta. Envía la respuesta con Content-Type: text/html.

$this->response->view('MyView'); // View/MyView.html.twig

📄 file(string $file_path, string $file_name = '', string $disposition = 'inline'): void

Envía un fichero como respuesta.

  • $file_path: Ruta al fichero en el servidor.
  • $file_name: Nombre que se sugerirá al cliente para el fichero.
  • $disposition: Tipo de disposición (inline para mostrar en el navegador, attachment para descargar).
// mostrar el archivo con opción de descarga
$this->response->file(FS_FOLDER . '/MyFiles/public/miArchivo.pdf', 'factura1.pdf', 'inline');

// descargar el archivo directamente
$this->response->file(FS_FOLDER . '/MyFiles/public/miArchivo.pdf', 'factura1.pdf', 'attachment');

⬇️ download(string $file_path, string $file_name = ''): void

Prepara una respuesta para forzar la descarga de un fichero. Establece las cabeceras Content-Disposition a attachment.

// descargar el archivo
$this->response->download(FS_FOLDER . '/MyFiles/public/fatura-230.xml', 'fatura230.xml');

pdf(string $content, string $file_name = ''): void

Prepara y envía una respuesta con contenido PDF. Establece las cabeceras apropiadas para mostrar un PDF en el navegador.

// leer su contenido
$miContenidoPdf = file_get_contents(FS_FOLDER . '/MyFiles/public/miArchivo.pdf');

// mostrarlo
$this->response->pdf($miContenidoPdf, 'miArchivo.pdf');

send(): void

Envía la respuesta completa (código de estado, cabeceras, cookies y contenido) al cliente.

// envio una respuesta 'OK' en formato texto y escribo la respuesta con send().
$this->response
    ->setContent('OK')
    ->header('Content-Type', 'text/plain')
    ->send();

// normalmente 'send()' se llama automáticamente dependiendo del método de Response
// revisar Core/Response.php para ver en qué métodos se llama 'send()'

🚫 disableSend(bool $disable = true): self

Deshabilita el envío de la respuesta. Útil para tests o para manipular la respuesta antes de enviarla.

// desactivo que se envie la respuesta
$this->response->disableSend();

// preparo una respuesta
$this->response->json(['hola' => 'mundo']);

// reactivo la respuesta
$this->response->disableSend(false);

// envio la respuesta
$this->response->send();
Cookies
Usamos cookies en nuestro sitio web para brindarte la experiencia más relevante recordando tus preferencias y visitas repetidas. Al hacer clic en "Aceptar", aceptas el uso de TODAS las cookies necesarias.
Copyright (c) 2013-2025 FacturaScripts
0.23264s

Soporte