HTTP-válasz

A Nette a HTTP-választ érthető API-val rendelkező objektumokba csomagolja, miközben szanálási szűrőt biztosít.

A HTTP-válasz egy Nette\Http\Response objektum, amelyet függőségi injektálással történő átadással kapunk meg. Az előadókban egyszerűen hívja meg a $httpResponse = $this->getHttpResponse().

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

Nette\Http\Response

Nette\Http\Request-tel ellentétben ez az objektum változtatható, így az állapot megváltoztatásához, azaz a fejlécek elküldéséhez használhatsz állítót. Ne feledje, hogy minden beállítót a tényleges kimenet elküldése előtt kell meghívni. A isSent() metódus megmondja, hogy a kimenet elküldésre került-e. Ha a true visszatér, akkor minden egyes fejléc küldési kísérlet Nette\InvalidStateException kivételt dob.

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

Megváltoztatja a státusz válaszkódot. A forráskód jobb olvashatósága érdekében ajánlott a tényleges számok helyett előre definiált konstansokat használni.

$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 el lettek-e küldve a szerverről a böngészőnek, í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)

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

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

deleteHeader(string $name)

Töröl egy korábban elküldött HTTP-fejlécet.

getHeader(string $header): ?string

Visszaadja az elküldött HTTP-fejlécet, vagy a null, ha nem létezik. A paraméter nem érzékeny a nagy- és kisbetűkre.

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

getHeaders(): array

Az összes elküldött HTTP-fejlécet asszociatív tömbként adja vissza.

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

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

Elküldi 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 felejtsd el ekkor kilépni a szkriptből.

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

setExpiration(?string $time)

A HTTP-dokumentum lejárati idejének beállítása a Cache-Control és a Expires fejlécek segítségével. A paraméter vagy egy időintervallum (szövegként) vagy a null, amely kikapcsolja a gyorsítótárazást.

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

sendAsFile(string $fileName)

A választ a megadott nevű Save as párbeszédpanel segítségével kell letölteni. Magát a fájlt nem küldi el a kimenetre.

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

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

Cookie-t küld. Alapértelmezett paraméterértékek:

$path '/' az (al)tartomány összes elérési útvonalára kiterjedő hatállyal (konfigurálható).
$domain null az aktuális (al)tartomány hatókörével, de az aldomainek kivételével (konfigurálható)
$secure true ha a webhely HTTPS-en fut, egyébként false (konfigurálható)
$httpOnly true a cookie nem hozzáférhető a JavaScript számára.
$sameSite 'Lax' a cookie-t nem kell elküldeni, ha más eredetű hozzáférésről történik.

A $path, $domain és $secure paraméterek alapértelmezett értékeit a configuration#HTTP cookie menüpontban módosíthatja.

Az idő megadható másodpercek számaként vagy karakterláncként:

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

A $domain opció határozza meg, hogy mely tartományok (származási helyek) fogadhatják el a cookie-kat. Ha nincs megadva, akkor a cookie-t ugyanaz a (al)tartomány fogadja el, amelyik beállítja, kivéve azok aldomainjeit. Ha a $domain van megadva, akkor az aldomainek is bevonásra kerülnek. Ezért a $domain megadása kevésbé korlátozó, mint az elhagyása. Például, ha a $domain = 'nette.org', cookie az összes aldomainen is elérhető, mint a doc.nette.org.

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

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

Töröl egy sütit. A paraméterek alapértelmezett értékei a következők:

  • $path minden könyvtárra kiterjedő hatállyal ('/').
  • $domain az aktuális (al)tartomány hatókörével, de nem az aldomainek hatókörével.
  • A $secure értéket a konfiguráció#HTTP cookie beállításai befolyásolják.
$httpResponse->deleteCookie('lang');
verzió: 4.0