HTTP Yanıtı

Nette, HTTP yanıtını anlaşılır bir API'ye sahip nesneler içinde kapsüller.

HTTP yanıtı Nette\Http\Response nesnesi tarafından temsil edilir. Nette ile çalışıyorsanız, bu nesne framework tarafından otomatik olarak oluşturulur ve bağımlılık enjeksiyonu aracılığıyla size iletilmesini sağlayabilirsiniz. Presenter'larda sadece $this->getHttpResponse() metodunu çağırmanız yeterlidir.

Kurulum ve gereksinimler

Nette\Http\Response

Nesne, Nette\Http\Request aksine değiştirilebilirdir (mutable), yani ayarlayıcılar kullanarak durumu değiştirebilirsiniz, örneğin başlıkları gönderebilirsiniz. Tüm ayarlayıcıların herhangi bir çıktı gönderilmeden önce çağrılması gerektiğini unutmayın. Çıktının zaten gönderilip gönderilmediğini isSent() metodu söyler. true döndürürse, başlık göndermeye yönelik her girişim Nette\InvalidStateException istisnası atar.

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

Yanıt kodu durumunu değiştirir. Kaynak kodunun daha iyi anlaşılması için, kod için sayılar yerine önceden tanımlanmış sabitler kullanmanızı öneririz.

$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önderilip gönderilmediğini ve dolayısıyla artık başlık göndermenin veya durum kodunu değiştirmenin mümkün olup olmadığını döndürür.

setHeader (string $name, string $value)

Bir HTTP başlığı gönderir ve daha önce gönderilen aynı addaki 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ı addaki başlığın üzerine yazmaz.

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

deleteHeader (string $name)

Daha önce gönderilen bir HTTP başlığını siler.

getHeader (string $header): ?string

Gönderilen HTTP başlığını veya böyle bir başlık yoksa null döndürür. Parametre büyük/küçük harfe duyarsızdır.

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

getHeaders(): array

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

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

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

Content-Type başlığını değiştirir.

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

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

Başka bir URL'ye yönlendirir. Ardından betiği sonlandırmayı 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ığıdır (metin olarak) ya da null'dır, bu da önbelleğe almayı devre dışı bırakır.

// tarayıcı önbelleği bir saat içinde sona erecek
$httpResponse->setExpiration('1 hour');

sendAsFile (string $fileName)

Yanıt, belirtilen ad altında Farklı Kaydet iletişim kutusu kullanılarak indirilecektir. Dosyanın kendisini göndermez.

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

Bir çerez gönderir. Parametrelerin varsayılan değerleri:

$path '/' çerez, (alt) alan adındaki tüm yollarda kapsama sahiptir (yapılandırılabilir)
$domain null bu, geçerli (alt) alan adında kapsama sahip olduğu, ancak alt alan adlarında olmadığı anlamına gelir (yapılandırılabilir)
$secure true web sitesi 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 alan adından erişim sırasında gönderilmeyebilir

$path, $domain ve $secure parametrelerinin varsayılan değerlerini yapılandırma içinde değiştirebilirsiniz.

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

$httpResponse->setCookie('lang', 'tr', '100 days'); // 'cs' changed to 'tr' as an example

$domain parametresi, hangi alan adlarının çerezi kabul edebileceğini belirtir. Belirtilmezse, çerez onu ayarlayan aynı (alt) alan adı tarafından kabul edilir, ancak alt alan adları tarafından değil. $domain belirtilirse, alt alan adları da dahil edilir. Bu nedenle, $domain belirtmek, atlamaktan daha az kısıtlayıcıdır. Örneğin, $domain = 'nette.org' ile çerezler doc.nette.org gibi tüm alt alan adlarında da kullanılabilir.

$sameSite değeri için Response::SameSiteLax, Response::SameSiteStrict ve Response::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 dizinlerde kapsama sahip ('/')
  • $domain geçerli (alt) alan adında kapsama sahip, ancak alt alan adlarında değil
  • $secure, yapılandırma içindeki ayarlara göre yönetilir
$httpResponse->deleteCookie('lang');
versiyon: 4.0