Nette Documentation Preview

syntax
HTTP Yanıtı
***********

.[perex]
Nette, HTTP yanıtını anlaşılabilir bir API ile nesneler halinde kapsüllerken bir sanitizasyon filtresi sağlar.

HTTP yanıtı, [bağımlılık enjeksiyonu |dependency-injection:passing-dependencies] kullanarak geçirerek elde ettiğiniz bir [api:Nette\Http\Response] nesnesidir. Sunucularda basitçe `$httpResponse = $this->getHttpResponse()` adresini çağırın.

→ [Kurulum ve gereksinimler |@home#Installation]


Nette\Http\Yanıt .[#toc-nette-http-response]
============================================

 [Nette\Http\Request |request]'in aksine, bu nesne değişkendir, bu nedenle durumu değiştirmek, yani başlıkları göndermek için ayarlayıcıları kullanabilirsiniz. Tüm ayarlayıcıların **gerçek çıktı gönderilmeden önce çağrılması gerektiğini unutmayın.** `isSent()` yöntemi çıktının gönderilip gönderilmediğini söyler. Eğer `true` döndürürse, her başlık gönderme girişimi bir `Nette\InvalidStateException` istisnası fırlatır.


setCode(int $code, string $reason=null) .[method]
-------------------------------------------------
Bir durum [yanıt kodunu |https://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html#sec10] değiştirir. Daha iyi kaynak kodu okunabilirliği için gerçek sayılar yerine [önceden tanımlanmış sabitlerin |api:Nette\Http\IResponse] kullanılması önerilir.

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


getCode(): int .[method]
------------------------
Yanıtın durum kodunu döndürür.


isSent(): bool .[method]
------------------------
Başlıkların sunucudan tarayıcıya zaten gönderilmiş olup olmadığını döndürür, bu nedenle artık başlık göndermek veya durum kodunu değiştirmek mümkün değildir.


setHeader(string $name, string $value) .[method]
------------------------------------------------
Bir HTTP başlığı gönderir ve daha önce gönderilen aynı adlı başlığın **üzerine yazar**.

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


addHeader(string $name, string $value) .[method]
------------------------------------------------
Bir HTTP başlığı gönderir ve **daha önce gönderilen aynı adlı başlığın** üzerine yazmaz.

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


deleteHeader(string $name) .[method]
------------------------------------
Önceden gönderilmiş bir HTTP başlığını siler.


getHeader(string $header): ?string .[method]
--------------------------------------------
Gönderilen HTTP başlığını veya yoksa `null` adresini döndürür. Parametre büyük/küçük harfe duyarlı değildir.

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


getHeaders(): array .[method]
-----------------------------
Gönderilen tüm HTTP başlıklarını ilişkisel dizi olarak döndürür.

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


setContentType(string $type, string $charset=null) .[method]
------------------------------------------------------------
`Content-Type` başlığını gönderir.

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


redirect(string $url, int $code=self::S302_Found): void .[method]
-----------------------------------------------------------------
Başka bir URL'ye yönlendirir. Daha sonra komut dosyasından çıkmayı unutmayın.

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


setExpiration(?string $time) .[method]
--------------------------------------
`Cache-Control` ve `Expires` başlıklarını kullanarak HTTP belgesinin sona erme süresini ayarlar. Parametre ya bir zaman aralığı (metin olarak) ya da önbelleğe almayı devre dışı bırakan `null` şeklindedir.

```php
// tarayıcı önbelleğinin süresi bir saat içinde dolar
$httpResponse->setExpiration('1 hour');
```


sendAsFile(string $fileName) .[method]
--------------------------------------
Yanıt, belirtilen adla *Farklı kaydet* iletişim kutusu ile indirilmelidir. Çıkışa herhangi bir dosya göndermez.

```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]
--------------------------------------------------------------------------------------------------------------------------------------------------------------
Bir çerez gönderir. Varsayılan parametre değerleri:

| `$path` | `'/'` | (alt)etki alanı *(yapılandırılabilir)* üzerindeki tüm yolların kapsamı ile
| `$domain` | `null` | geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil *(yapılandırılabilir)*
| `$secure` | `true` | site HTTPS üzerinde çalışıyorsa, aksi takdirde `false` *(yapılandırılabilir)*
| `$httpOnly` | `true` | çerez JavaScript için erişilemez
| `$sameSite` | `'Lax'` | çerez [başka bir kaynaktan erişildiğinde |nette:glossary#SameSite cookie] gönderilmek zorunda değildir

`$path`, `$domain` ve `$secure` parametrelerinin varsayılan değerlerini [yapılandırma#HTTP çerezi |configuration#HTTP cookie] bölümünden değiştirebilirsiniz.

Zaman, saniye sayısı veya bir dize olarak belirtilebilir:

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

`$domain` seçeneği, hangi etki alanlarının (kökenlerin) çerezleri kabul edebileceğini belirler. Belirtilmezse, çerez, alt alan adları hariç olmak üzere, kendisi tarafından belirlenen aynı (alt) alan adı tarafından kabul edilir. Eğer `$domain` belirtilirse, alt alan adları da dahil edilir. Bu nedenle, `$domain` belirtmek, belirtmemekten daha az kısıtlayıcıdır. Örneğin, `$domain = 'nette.org'`, çerezi `doc.nette.org` gibi tüm alt alan adlarında da kullanılabilir.

`$sameSite` değeri için `Response::SameSiteLax`, `SameSiteStrict` ve `SameSiteNone` sabitlerini kullanabilirsiniz.


deleteCookie(string $name, string $path=null, string $domain=null, bool $secure=null): void .[method]
-----------------------------------------------------------------------------------------------------
Bir çerezi siler. Parametrelerin varsayılan değerleri şunlardır:
- `$path` tüm dizinleri kapsayacak şekilde (`'/'`)
- `$domain` geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil
- `$secure` [yapılandırma#HTTP çerezi |configuration#HTTP cookie] içindeki ayarlardan etkilenir

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

HTTP Yanıtı

Nette, HTTP yanıtını anlaşılabilir bir API ile nesneler halinde kapsüllerken bir sanitizasyon filtresi sağlar.

HTTP yanıtı, bağımlılık enjeksiyonu kullanarak geçirerek elde ettiğiniz bir Nette\Http\Response nesnesidir. Sunucularda basitçe $httpResponse = $this->getHttpResponse() adresini çağırın.

Kurulum ve gereksinimler

Nette\Http\Yanıt

Nette\Http\Request'in aksine, bu nesne değişkendir, bu nedenle durumu değiştirmek, yani başlıkları göndermek için ayarlayıcıları kullanabilirsiniz. Tüm ayarlayıcıların gerçek çıktı gönderilmeden önce çağrılması gerektiğini unutmayın. isSent() yöntemi çıktının gönderilip gönderilmediğini söyler. Eğer true döndürürse, her başlık gönderme girişimi bir Nette\InvalidStateException istisnası fırlatır.

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

Bir durum yanıt kodunu değiştirir. Daha iyi kaynak kodu okunabilirliği için gerçek sayılar yerine önceden tanımlanmış sabitlerin kullanılması önerilir.

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

getCode(): int

Yanıtın durum kodunu döndürür.

isSent(): bool

Başlıkların sunucudan tarayıcıya zaten gönderilmiş olup olmadığını döndürür, bu nedenle artık başlık göndermek veya durum kodunu değiştirmek mümkün değildir.

setHeader(string $name, string $value)

Bir HTTP başlığı gönderir ve daha önce gönderilen aynı adlı başlığın üzerine yazar.

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

addHeader(string $name, string $value)

Bir HTTP başlığı gönderir ve daha önce gönderilen aynı adlı başlığın üzerine yazmaz.

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

deleteHeader(string $name)

Önceden gönderilmiş bir HTTP başlığını siler.

getHeader(string $header): ?string

Gönderilen HTTP başlığını veya yoksa null adresini döndürür. Parametre büyük/küçük harfe duyarlı değildir.

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

getHeaders(): array

Gönderilen tüm HTTP başlıklarını ilişkisel dizi olarak döndürür.

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

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

Content-Type başlığını gönderir.

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

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

Başka bir URL'ye yönlendirir. Daha sonra komut dosyasından çıkmayı unutmayın.

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

setExpiration(?string $time)

Cache-Control ve Expires başlıklarını kullanarak HTTP belgesinin sona erme süresini ayarlar. Parametre ya bir zaman aralığı (metin olarak) ya da önbelleğe almayı devre dışı bırakan null şeklindedir.

// tarayıcı önbelleğinin süresi bir saat içinde dolar
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

Yanıt, belirtilen adla Farklı kaydet iletişim kutusu ile indirilmelidir. Çıkışa herhangi bir dosya göndermez.

$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)

Bir çerez gönderir. Varsayılan parametre değerleri:

$path '/' (alt)etki alanı (yapılandırılabilir) üzerindeki tüm yolların kapsamı ile
$domain null geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil (yapılandırılabilir)
$secure true site HTTPS üzerinde çalışıyorsa, aksi takdirde false (yapılandırılabilir)
$httpOnly true çerez JavaScript için erişilemez
$sameSite 'Lax' çerez başka bir kaynaktan erişildiğinde gönderilmek zorunda değildir

$path, $domain ve $secure parametrelerinin varsayılan değerlerini yapılandırma#HTTP çerezi bölümünden değiştirebilirsiniz.

Zaman, saniye sayısı veya bir dize olarak belirtilebilir:

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

$domain seçeneği, hangi etki alanlarının (kökenlerin) çerezleri kabul edebileceğini belirler. Belirtilmezse, çerez, alt alan adları hariç olmak üzere, kendisi tarafından belirlenen aynı (alt) alan adı tarafından kabul edilir. Eğer $domain belirtilirse, alt alan adları da dahil edilir. Bu nedenle, $domain belirtmek, belirtmemekten daha az kısıtlayıcıdır. Örneğin, $domain = 'nette.org', çerezi doc.nette.org gibi tüm alt alan adlarında da kullanılabilir.

$sameSite değeri için Response::SameSiteLax, SameSiteStrict ve SameSiteNone sabitlerini kullanabilirsiniz.

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

Bir çerezi siler. Parametrelerin varsayılan değerleri şunlardır:

  • $path tüm dizinleri kapsayacak şekilde ('/')
  • $domain geçerli (alt) etki alanının kapsamı ile, ancak alt etki alanları ile değil
  • $secure yapılandırma#HTTP çerezi içindeki ayarlardan etkilenir
$httpResponse->deleteCookie('lang');