Nette Documentation Preview

syntax
HTTP-відповідь
**************
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

HTTP-відповідь

Nette інкапсулює HTTP-відповідь в об'єкти зі зрозумілим API.

HTTP-відповідь представляє об'єкт Nette\Http\Response. Якщо ви працюєте з Nette, цей об'єкт автоматично створюється фреймворком, і ви можете отримати його за допомогою впровадження залежностей. У презентерах достатньо лише викликати метод $this->getHttpResponse().

Встановлення та вимоги

Nette\Http\Response

Об'єкт, на відміну від Nette\Http\Request, є mutable (змінним), тобто за допомогою сеттерів ви можете змінювати стан, наприклад, надсилати заголовки. Не забувайте, що всі сеттери повинні бути викликані перед надсиланням будь-якого виводу. Чи був вже надісланий вивід, покаже метод isSent(). Якщо він повертає true, кожна спроба надіслати заголовок викличе виняток Nette\InvalidStateException.

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

Змінює код стану відповіді. Для кращої зрозумілості вихідного коду рекомендуємо для коду використовувати замість чисел передбачені константи.

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

getCode(): int

Повертає код стану відповіді.

isSent(): bool

Повертає, чи вже відбулося надсилання заголовків з сервера до браузера, і отже, вже неможливо надсилати заголовки чи змінювати код стану.

setHeader(string $name, string $value)

Надсилає HTTP-заголовок і перезаписує раніше надісланий заголовок з тією ж назвою.

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

addHeader(string $name, string $value)

Надсилає HTTP-заголовок і не перезаписує раніше надісланий заголовок з тією ж назвою.

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

deleteHeader(string $name)

Видаляє раніше надісланий HTTP-заголовок.

getHeader(string $header): ?string

Повертає надісланий HTTP-заголовок або null, якщо такий не існує. Параметр нечутливий до регістру.

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

getHeaders(): array

Повертає всі надіслані HTTP-заголовки як асоціативний масив.

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

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

Змінює заголовок Content-Type.

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

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

Перенаправляє на інший URL. Не забудьте потім завершити скрипт.

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

setExpiration(?string $time)

Встановлює термін дії HTTP-документа за допомогою заголовків Cache-Control та Expires. Параметром є або часовий інтервал (як текст), або null, що заборонить кешування.

// кеш у браузері закінчиться через годину
$httpResponse->setExpiration('1 hour');

sendAsFile(string $fileName)

Відповідь буде завантажена за допомогою діалогового вікна Зберегти як під вказаною назвою. Сам файл при цьому не надсилається.

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

Надсилає cookie. Значення параметрів за замовчуванням:

$path '/' cookie має область дії на всі шляхи в (під)домені (конфігурується)
$domain null що означає з областю дії на поточний (під)домен, але не на його піддомени (конфігурується)
$secure true якщо сайт працює на HTTPS, інакше false (конфігурується)
$httpOnly true cookie недоступна для JavaScript
$sameSite 'Lax' cookie може не надсилатися при доступі з іншого домену

Значення параметрів $path, $domain та $secure за замовчуванням можна змінити в конфігурації.

Час можна вказувати як кількість секунд або рядок:

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

Параметр $domain визначає, які домени можуть приймати cookie. Якщо він не вказаний, cookie приймає той самий (під)домен, що й встановив його, але не його піддомени. Якщо $domain вказаний, піддомени також включаються. Тому вказання $domain є менш обмежувальним, ніж його відсутність. Наприклад, при $domain = 'nette.org' cookies доступні також на всіх піддоменах, таких як doc.nette.org.

Для значення $sameSite ви можете використовувати константи Response::SameSiteLax, SameSiteStrict та SameSiteNone.

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

Видаляє cookie. Значення параметрів за замовчуванням:

  • $path з областю дії на всі каталоги ('/')
  • $domain з областю дії на поточний (під)домен, але не на його піддомени
  • $secure керується налаштуваннями в конфігурації
$httpResponse->deleteCookie('lang');