HTTP válasz

A Nette a HTTP választ érthető API-val rendelkező objektumokba zárja.

A HTTP választ a Nette\Http\Response objektum képviseli. Ha a Nette-tel dolgozik, ezt az objektumot a keretrendszer automatikusan létrehozza, és dependency injection segítségével átadhatja magának. A presenterekben elég csak a $this->getHttpResponse() metódust meghívni.

Telepítés és követelmények

Nette\Http\Response

Az objektum, ellentétben a Nette\Http\Request-tel, mutable (megváltoztatható), tehát setterek segítségével megváltoztathatja az állapotot, például fejléceket küldhet. Ne felejtse el, hogy minden settert bármilyen kimenet elküldése előtt kell meghívni. Azt, hogy a kimenet már elküldésre került-e, az isSent() metódus árulja el. Ha true-t ad vissza, minden fejléc küldési kísérlet Nette\InvalidStateException kivételt vált ki.

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

Megváltoztatja a válasz állapotkódját. A forráskód jobb érthetősége érdekében javasoljuk, hogy a kódhoz számok helyett előre definiált konstansokat használjon.

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

getCode(): int

Visszaadja a válasz állapotkódját.

isSent(): bool

Visszaadja, hogy a fejlécek már elküldésre kerültek-e a szerverről a böngészőbe, és így már nem lehet fejléceket küldeni vagy az állapotkódot megváltoztatni.

setHeader (string $name, string $value)

Elküld egy HTTP fejlécet és felülírja a korábban elküldött, azonos nevű fejlécet.

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

addHeader (string $name, string $value)

Elküld egy HTTP fejlécet és nem írja felül a korábban elküldött, azonos nevű fejlécet.

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

deleteHeader (string $name)

Törli a korábban elküldött HTTP fejlécet.

getHeader (string $header): ?string

Visszaadja az elküldött HTTP fejlécet vagy null-t, ha ilyen nem létezik. A paraméter kis- és nagybetű érzéketlen.

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

getHeaders(): array

Visszaadja az összes elküldött HTTP fejlécet asszociatív tömbként.

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

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

Megváltoztatja a Content-Type fejlécet.

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

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

Átirányít egy másik URL-re. Ne felejtse el utána leállítani a szkriptet.

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

setExpiration (?string $time)

Beállítja a HTTP dokumentum lejáratát a Cache-Control és Expires fejlécek segítségével. A paraméter vagy egy időintervallum (szövegként), vagy null, ami letiltja a gyorsítótárazást.

// a böngésző gyorsítótára egy óra múlva lejár
$httpResponse->setExpiration('1 hour');

sendAsFile (string $fileName)

A választ a Mentés másként párbeszédablak segítségével tölti le a megadott néven. Magát a fájlt nem küldi el.

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

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

Elküld egy cookie-t. A paraméterek alapértelmezett értékei:

$path '/' a cookie hatóköre az összes útvonalra kiterjed a (sub)domainen (konfigurálható)
$domain null ami azt jelenti, hogy a hatókör az aktuális (sub)domainre terjed ki, de nem annak aldomainjeire (konfigurálható)
$secure true ha a webhely HTTPS-en fut, egyébként false (konfigurálható)
$httpOnly true a cookie JavaScript számára nem hozzáférhető
$sameSite 'Lax' a cookie nem feltétlenül kerül elküldésre más domainről való hozzáférés esetén

A $path, $domain és $secure paraméterek alapértelmezett értékeit megváltoztathatja a konfigurációban.

Az időt megadhatja másodpercek számaként vagy stringként:

$httpResponse->setCookie('lang', 'cs', '100 days');

A $domain paraméter meghatározza, mely domainek fogadhatják el a cookie-t. Ha nincs megadva, a cookie-t ugyanaz a (sub)domain fogadja el, amelyik beállította, de nem annak aldomainjei. Ha a $domain meg van adva, az aldomainek is beletartoznak. Ezért a $domain megadása kevésbé korlátozó, mint annak elhagyása. Például a $domain = 'nette.org' esetén a cookie-k minden aldomainen, mint például a doc.nette.org, is elérhetők.

A $sameSite értékhez használhatja a Response::SameSiteLax, Response::SameSiteStrict és Response::SameSiteNone konstansokat.

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

Törli a cookie-t. A paraméterek alapértelmezett értékei:

  • $path hatókörrel az összes könyvtárra ('/')
  • $domain hatókörrel az aktuális (sub)domainre, de nem annak aldomainjeire
  • $secure a konfigurációban beállítottak szerint
$httpResponse->deleteCookie('lang');
verzió: 4.0