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.
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:
$pathtüm dizinlerde kapsama sahip ('/')$domaingeç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');