Nette\Web\HttpResponse
Třída zapouzdřuje a sjednocuje funkce pro obsluhu HTTP odpovědi serveru.
Umožňuje:
- změnit stavový kód odpovědi
- určit typ obsahu a jeho kódování
- odeslat HTTP hlavičky
- správu cookies
Získaní objektu HttpResponse
$httpResponse = new Nette\Web\HttpResponse;
nebo pokud používáte běhové prostředí Nette můžete použít metodu Nette\Environment::getHttpResponse():
$httpResponse = Nette\Environment::getHttpResponse();
Použití
Změna kódu odpovědi
$httpResponse->setCode(Nette\Web\IHttpResponse\S404_NOT_FOUND); // změní kód na 404 Not Found
kódy jsou před připraveny jako konstanty v rozhraní Nette\Web\IHttpResponse:
S200_OK = 200, S204_NO_CONTENT = 204, S300_MULTIPLE_CHOICES = 300, S301_MOVED_PERMANENTLY = 301, S302_FOUND = 302, S303_SEE_OTHER = 303 S303_POST_GET = 303 S304_NOT_MODIFIED = 304 S307_TEMPORARY_REDIRECT= 307 S400_BAD_REQUEST = 400 S401_UNAUTHORIZED = 401 S403_FORBIDDEN = 403 S404_NOT_FOUND = 404 S410_GONE = 410 S500_INTERNAL_SERVER_ERROR = 500 S501_NOT_IMPLEMENTED = 501 S503_SERVICE_UNAVAILABLE = 503
Změna typu obsahu
Odešle hlavičku Content-type:
$httpReponse->setContentType('text/plain', 'UTF-8');
Nastavení expirace dokumentu
$httpResponse->expire(3600); // cache na straně prohlížeče vyprší za hodinu
Metodě expire můžete také předat timestamp tedy čas
vypršení cache.
Odeslání ostatních HTTP hlaviček
Na ostatní hlavičky je tu metoda setHeader():
$httpResponse->setHeader('Pragma', 'no-cache');
Chcete-li přepsat již nastavenou hlavičku předejte metodě jako třetí parametr TRUE:
$httpResponse->setHeader('Pragma', 'no-cache', TRUE);
Pokud potřebujete zjistit zda je ještě možné odeslat další hlavičku
(např. byl již odeslán nějaký výstup), můžete použít metodu
headersSent(), ta vrací TRUE pokud byly hlavičky odeslány a
nelze tedy už odeslat další.
Seznam hlaviček připravených k odeslání (nebo již odeslaných)
získáte metodou getHeaders().
Cookies
Pro manipulaci s cookies slouží metody setCookie()
a deleteCookie()
$httpResponse->setCookie('author', 'xgd', time() + 24 * 60 * 60); // nastaví cookie author na hodnotu xgd
Odstranění cookie:
$httpResponse->deleteCookie('author');
Tyto dvě metody přijimájí ještě další parametry: $path
(pod-adresář kde bude cookie dostupná), $domain,
$secure.
Viz také:
