Nette Documentation Preview

syntax
HTTP-válasz
***********

.[perex]
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 [api:Nette\Http\Response] objektum, amelyet [függőségi injektálással |dependency-injection:passing-dependencies] 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 |@home#Installation]


Nette\Http\Response .[#toc-nette-http-response]
===============================================

A [Nette\Http\Request-tel |request] 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) .[method]
-------------------------------------------------
Megváltoztatja a státusz [válaszkódot |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10]. A forráskód jobb olvashatósága érdekében ajánlott a tényleges számok helyett [előre definiált konstansokat |api:Nette\Http\IResponse] használni.

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


getCode(): int .[method]
------------------------
Visszaadja a válasz állapotkódját.


isSent(): bool .[method]
------------------------
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) .[method]
------------------------------------------------
Elküld egy HTTP fejlécet, és **felülírja** a korábban elküldött azonos nevű fejlécet.

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


addHeader(string $name, string $value) .[method]
------------------------------------------------
HTTP fejlécet küld, és **nem írja felül** a korábban küldött azonos nevű fejlécet.

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


deleteHeader(string $name) .[method]
------------------------------------
Töröl egy korábban elküldött HTTP-fejlécet.


getHeader(string $header): ?string .[method]
--------------------------------------------
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.

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


getHeaders(): array .[method]
-----------------------------
Az összes elküldött HTTP-fejlécet asszociatív tömbként adja vissza.

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


setContentType(string $type, string $charset=null) .[method]
------------------------------------------------------------
Elküldi a `Content-Type` fejlécet.

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


redirect(string $url, int $code=self::S302_Found): void .[method]
-----------------------------------------------------------------
Átirányít egy másik URL-re. Ne felejtsd el ekkor kilépni a szkriptből.

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


setExpiration(?string $time) .[method]
--------------------------------------
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.

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


sendAsFile(string $fileName) .[method]
--------------------------------------
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.

```php
$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) .[method]
--------------------------------------------------------------------------------------------------------------------------------------------------------------
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|nette:glossary#SameSite cookie].

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

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

```php
$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 .[method]
-----------------------------------------------------------------------------------------------------
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 |configuration#HTTP cookie] beállításai befolyásolják.

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

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');