Nette Documentation Preview

syntax
Resposta HTTP
*************

.[perex]
Nette encapsula a resposta HTTP em objetos com uma API compreensível.

A resposta HTTP é representada pelo objeto [api:Nette\Http\Response]. Se trabalha com Nette, este objeto é criado automaticamente pelo framework e pode recebê-lo por meio de [injeção de dependência |dependency-injection:passing-dependencies]. Nos presenters, basta chamar o método `$this->getHttpResponse()`.

→ [Instalação e requisitos |@home#Instalação]


Nette\Http\Response
===================

O objeto, ao contrário de [Nette\Http\Request|request], é mutável, ou seja, usando setters pode alterar o estado, por exemplo, enviar cabeçalhos. Lembre-se de que todos os setters devem ser chamados **antes de enviar qualquer saída.** Se a saída já foi enviada é indicado pelo método `isSent()`. Se retornar `true`, qualquer tentativa de enviar um cabeçalho lançará a exceção `Nette\InvalidStateException`.


setCode(int $code, ?string $reason=null) .[method]
--------------------------------------------------
Altera o [código de status da resposta |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. Para melhor clareza do código-fonte, recomendamos usar [constantes predefinidas |api:Nette\Http\IResponse] em vez de números para o código.

```php
$httpResponse->setCode(Nette\Http\Response::S404_NotFound);
```


getCode(): int .[method]
------------------------
Retorna o código de status da resposta.


isSent(): bool .[method]
------------------------
Retorna se os cabeçalhos já foram enviados do servidor para o navegador e, portanto, não é mais possível enviar cabeçalhos ou alterar o código de status.


setHeader(string $name, string $value) .[method]
------------------------------------------------
Envia um cabeçalho HTTP e **sobrescreve** um cabeçalho enviado anteriormente com o mesmo nome.

```php
$httpResponse->setHeader('Pragma', 'no-cache');
```


addHeader(string $name, string $value) .[method]
------------------------------------------------
Envia um cabeçalho HTTP e **não sobrescreve** um cabeçalho enviado anteriormente com o mesmo nome.

```php
$httpResponse->addHeader('Accept', 'application/json');
$httpResponse->addHeader('Accept', 'application/xml');
```


deleteHeader(string $name) .[method]
------------------------------------
Exclui um cabeçalho HTTP enviado anteriormente.


getHeader(string $header): ?string .[method]
--------------------------------------------
Retorna o cabeçalho HTTP enviado ou `null` se não existir. O parâmetro é insensível a maiúsculas/minúsculas.

```php
$pragma = $httpResponse->getHeader('Pragma');
```


getHeaders(): array .[method]
-----------------------------
Retorna todos os cabeçalhos HTTP enviados como um array associativo.

```php
$headers = $httpResponse->getHeaders();
echo $headers['Pragma'];
```


setContentType(string $type, ?string $charset=null) .[method]
-------------------------------------------------------------
Altera o cabeçalho `Content-Type`.

```php
$httpResponse->setContentType('text/plain', 'UTF-8');
```


redirect(string $url, int $code=self::S302_Found): void .[method]
-----------------------------------------------------------------
Redireciona para outra URL. Lembre-se de encerrar o script depois.

```php
$httpResponse->redirect('http://example.com');
exit;
```


setExpiration(?string $time) .[method]
--------------------------------------
Define a expiração do documento HTTP usando os cabeçalhos `Cache-Control` e `Expires`. O parâmetro é um intervalo de tempo (como texto) ou `null`, que desativa o cache.

```php
// o cache no navegador expirará em uma hora
$httpResponse->setExpiration('1 hour');
```


sendAsFile(string $fileName) .[method]
--------------------------------------
A resposta será baixada usando a caixa de diálogo *Salvar como* com o nome fornecido. O ficheiro em si não é enviado.

```php
$httpResponse->sendAsFile('fatura.pdf');
```


setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null) .[method]
-------------------------------------------------------------------------------------------------------------------------------------------------------------------
Envia um cookie. Os valores padrão dos parâmetros são:

| `$path`     | `'/'`   | o cookie tem alcance para todos os caminhos no (sub)domínio *(configurável)*
| `$domain`   | `null`  | o que significa com alcance para o (sub)domínio atual, mas não seus subdomínios *(configurável)*
| `$secure`   | `true`  | se o site estiver rodando em HTTPS, caso contrário `false` *(configurável)*
| `$httpOnly` | `true`  | o cookie é inacessível para JavaScript
| `$sameSite` | `'Lax'` | o cookie pode não ser enviado durante o [acesso de outro domínio |nette:glossary#SameSite cookie]

Os valores padrão dos parâmetros `$path`, `$domain` e `$secure` podem ser alterados na [configuração |configuration#Cookie HTTP].

O tempo pode ser especificado como um número de segundos ou uma string:

```php
$httpResponse->setCookie('lang', 'pt', '100 days'); // Traduzido 'cs' para 'pt' como exemplo
```

O parâmetro `$domain` determina quais domínios podem aceitar o cookie. Se não for especificado, o cookie é aceito pelo mesmo (sub)domínio que o definiu, mas não por seus subdomínios. Se `$domain` for especificado, os subdomínios também são incluídos. Portanto, especificar `$domain` é menos restritivo do que omiti-lo. Por exemplo, com `$domain = 'nette.org'`, os cookies também estão disponíveis em todos os subdomínios como `doc.nette.org`.

Para o valor `$sameSite`, pode usar as constantes `Response::SameSiteLax`, `SameSiteStrict` e `SameSiteNone`.


deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null): void .[method]
--------------------------------------------------------------------------------------------------------
Exclui um cookie. Os valores padrão dos parâmetros são:
- `$path` com alcance para todos os diretórios (`'/'`)
- `$domain` com alcance para o (sub)domínio atual, mas não seus subdomínios
- `$secure` é regido pelas configurações na [configuração |configuration#Cookie HTTP]

```php
$httpResponse->deleteCookie('lang');
```

Resposta HTTP

Nette encapsula a resposta HTTP em objetos com uma API compreensível.

A resposta HTTP é representada pelo objeto Nette\Http\Response. Se trabalha com Nette, este objeto é criado automaticamente pelo framework e pode recebê-lo por meio de injeção de dependência. Nos presenters, basta chamar o método $this->getHttpResponse().

Instalação e requisitos

Nette\Http\Response

O objeto, ao contrário de Nette\Http\Request, é mutável, ou seja, usando setters pode alterar o estado, por exemplo, enviar cabeçalhos. Lembre-se de que todos os setters devem ser chamados antes de enviar qualquer saída. Se a saída já foi enviada é indicado pelo método isSent(). Se retornar true, qualquer tentativa de enviar um cabeçalho lançará a exceção Nette\InvalidStateException.

setCode(int $code, ?string $reason=null)

Altera o código de status da resposta. Para melhor clareza do código-fonte, recomendamos usar constantes predefinidas em vez de números para o código.

$httpResponse->setCode(Nette\Http\Response::S404_NotFound);

getCode(): int

Retorna o código de status da resposta.

isSent(): bool

Retorna se os cabeçalhos já foram enviados do servidor para o navegador e, portanto, não é mais possível enviar cabeçalhos ou alterar o código de status.

setHeader(string $name, string $value)

Envia um cabeçalho HTTP e sobrescreve um cabeçalho enviado anteriormente com o mesmo nome.

$httpResponse->setHeader('Pragma', 'no-cache');

addHeader(string $name, string $value)

Envia um cabeçalho HTTP e não sobrescreve um cabeçalho enviado anteriormente com o mesmo nome.

$httpResponse->addHeader('Accept', 'application/json');
$httpResponse->addHeader('Accept', 'application/xml');

deleteHeader(string $name)

Exclui um cabeçalho HTTP enviado anteriormente.

getHeader(string $header): ?string

Retorna o cabeçalho HTTP enviado ou null se não existir. O parâmetro é insensível a maiúsculas/minúsculas.

$pragma = $httpResponse->getHeader('Pragma');

getHeaders(): array

Retorna todos os cabeçalhos HTTP enviados como um array associativo.

$headers = $httpResponse->getHeaders();
echo $headers['Pragma'];

setContentType(string $type, ?string $charset=null)

Altera o cabeçalho Content-Type.

$httpResponse->setContentType('text/plain', 'UTF-8');

redirect(string $url, int $code=self::S302_Found)void

Redireciona para outra URL. Lembre-se de encerrar o script depois.

$httpResponse->redirect('http://example.com');
exit;

setExpiration(?string $time)

Define a expiração do documento HTTP usando os cabeçalhos Cache-Control e Expires. O parâmetro é um intervalo de tempo (como texto) ou null, que desativa o cache.

// o cache no navegador expirará em uma hora
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

A resposta será baixada usando a caixa de diálogo Salvar como com o nome fornecido. O ficheiro em si não é enviado.

$httpResponse->sendAsFile('fatura.pdf');

setCookie(string $name, string $value, $time, ?string $path=null, ?string $domain=null, ?bool $secure=null, ?bool $httpOnly=null, ?string $sameSite=null)

Envia um cookie. Os valores padrão dos parâmetros são:

$path '/' o cookie tem alcance para todos os caminhos no (sub)domínio (configurável)
$domain null o que significa com alcance para o (sub)domínio atual, mas não seus subdomínios (configurável)
$secure true se o site estiver rodando em HTTPS, caso contrário false (configurável)
$httpOnly true o cookie é inacessível para JavaScript
$sameSite 'Lax' o cookie pode não ser enviado durante o acesso de outro domínio

Os valores padrão dos parâmetros $path, $domain e $secure podem ser alterados na configuração.

O tempo pode ser especificado como um número de segundos ou uma string:

$httpResponse->setCookie('lang', 'pt', '100 days'); // Traduzido 'cs' para 'pt' como exemplo

O parâmetro $domain determina quais domínios podem aceitar o cookie. Se não for especificado, o cookie é aceito pelo mesmo (sub)domínio que o definiu, mas não por seus subdomínios. Se $domain for especificado, os subdomínios também são incluídos. Portanto, especificar $domain é menos restritivo do que omiti-lo. Por exemplo, com $domain = 'nette.org', os cookies também estão disponíveis em todos os subdomínios como doc.nette.org.

Para o valor $sameSite, pode usar as constantes Response::SameSiteLax, SameSiteStrict e SameSiteNone.

deleteCookie(string $name, ?string $path=null, ?string $domain=null, ?bool $secure=null)void

Exclui um cookie. Os valores padrão dos parâmetros são:

  • $path com alcance para todos os diretórios ('/')
  • $domain com alcance para o (sub)domínio atual, mas não seus subdomínios
  • $secure é regido pelas configurações na configuração
$httpResponse->deleteCookie('lang');