Spec-Zone.ru › Yii 2.0

Класс yii\web\Response

Все классы | Свойства | Методы | События | Константы
Наследование yii\web\Response » yii\base\Response » yii\base\Component » yii\base\Object
Реализует yii\base\Configurable
Доступно с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/web/Response.php

Класс web Response представляет HTTP-ответ

Он содержит $headers, $cookies и $content, которые будут отправлены клиенту. Он также управляет HTTP кодом состояния.

Response настроен как компонент приложения в yii\web\Application по умолчанию. Вы можете получить доступ к этому экземпляру через Yii::$app->response.

Вы можете изменить его конфигурацию, добавив массив в вашу конфигурацию приложения в components, как показано в следующем примере:

'response' => [
    'format' => yii\web\Response::FORMAT_JSON,
    'charset' => 'UTF-8',
    // ...
]

Для получения более подробной информации и сведений об использовании Response, см. статью руководства о ответах.

Публичные свойства

Свойство Тип Описание Определено в
$acceptMimeType строка Тип MIME (например, application/json) из заголовка ACCEPT запроса, выбранный для этого ответа. yii\web\Response
$acceptParams массив Параметры (например, `['q' => 1, 'version' => '1. yii\web\Response
$behaviors yii\base\Behavior[] Список присоединенных к этому компоненту поведений yii\base\Component
$charset строка Кодировка символов текстового ответа. yii\web\Response
$content строка Содержимое ответа. yii\web\Response
$cookies yii\web\CookieCollection Коллекция cookie. yii\web\Response
$data смешанное Исходные данные ответа. yii\web\Response
$downloadHeaders строка Имя файла для скачивания yii\web\Response
$exitStatus целое число Код завершения. yii\base\Response
$format строка Формат ответа. yii\web\Response
$formatters массив Форматировщики для преобразования данных в содержимое ответа указанного $format. yii\web\Response
$headers yii\web\HeaderCollection Коллекция заголовков yii\web\Response
$httpStatuses массив Список кодов HTTP-состояний и соответствующих текстов yii\web\Response
$isClientError логическое значение Указывает ли этот ответ на ошибку клиента yii\web\Response
$isEmpty логическое значение Является ли этот ответ пустым yii\web\Response
$isForbidden логическое значение Указывает ли этот ответ на запрет текущего запроса yii\web\Response
$isInformational логическое значение Является ли этот ответ информационным yii\web\Response
$isInvalid логическое значение Содержит ли этот ответ действительный $statusCode. yii\web\Response
$isNotFound логическое значение Указывает ли этот ответ на то, что запрашиваемый ресурс не найден yii\web\Response
$isOk логическое значение Является ли этот ответ корректным yii\web\Response
$isRedirection логическое значение Является ли этот ответ перенаправлением yii\web\Response
$isSent логическое значение Отправлен ли ответ. yii\web\Response
$isServerError логическое значение Указывает ли этот ответ на ошибку сервера yii\web\Response
$isSuccessful логическое значение Успешен ли этот ответ yii\web\Response
$statusCode целое число Код HTTP-состояния, который нужно отправить с ответом. yii\web\Response
$statusCodeByException Исключение|\Error Объект исключения. yii\web\Response
$statusText строка Описание HTTP-состояния, которое передаётся вместе с кодом состояния. yii\web\Response
$stream ресурс|массив Поток для отправки. yii\web\Response
$version строка Версия HTTP-протокола для использования. yii\web\Response

Публичные методы

Метод Описание Определён в
__call() Вызывает метод с указанным именем, который не является методом класса. yii\base\Object
__clone() Этот метод вызывается после создания объекта путём клонирования существующего. yii\base\Component
__construct() Конструктор. yii\base\Object
__get() Возвращает значение свойства объекта. yii\base\Object
__isset() Проверяет, установлено ли свойство, т.е. определено и не равно null. yii\base\Object
__set() Устанавливает значение свойства объекта. yii\base\Object
__unset() Устанавливает свойство объекта в значение null. yii\base\Object
attachBehavior() Прикрепляет поведение к данному компоненту. yii\base\Component
attachBehaviors() Прикрепляет список поведений к компоненту. yii\base\Component
behaviors() Возвращает список поведений, по которым должен действовать этот компонент. yii\base\Component
canGetProperty() Возвращает значение, указывающее, можно ли прочитать свойство. yii\base\Object
canSetProperty() Возвращает значение, указывающее, можно ли установить свойство. yii\base\Object
className() Возвращает полное квалифицированное имя этого класса. yii\base\Object
clear() Очищает заголовки, куки, содержимое, код состояния ответа. yii\web\Response
clearOutputBuffers() Удаляет все существующие буферы вывода. yii\base\Response
detachBehavior() Отсоединяет поведение от компонента. yii\base\Component
detachBehaviors() Отсоединяет все поведения от компонента. yii\base\Component
ensureBehaviors() Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. yii\base\Component
getBehavior() Возвращает объект поведения с указанным именем. yii\base\Component
getBehaviors() Возвращает все присоединённые к этому компоненту поведения. yii\base\Component
getCookies() Возвращает коллекцию куки. yii\web\Response
getHeaders() Возвращает коллекцию заголовков. yii\web\Response
getIsClientError() yii\web\Response
getIsEmpty() yii\web\Response
getIsForbidden() yii\web\Response
getIsInformational() yii\web\Response
getIsInvalid() yii\web\Response
getIsNotFound() yii\web\Response
getIsOk() yii\web\Response
getIsRedirection() yii\web\Response
getIsServerError() yii\web\Response
getIsSuccessful() yii\web\Response
getStatusCode() yii\web\Response
hasEventHandlers() Возвращает значение, указывающее, есть ли обработчик, прикреплённый к событию с указанным именем. yii\base\Component
hasMethod() Возвращает значение, указывающее, определён ли метод. yii\base\Object
hasProperty() Возвращает значение, указывающее, определено ли свойство. yii\base\Object
init() Инициализирует этот компонент. yii\web\Response
off() Отсоединяет существующий обработчик событий от этого компонента. yii\base\Component
on() Прикрепляет обработчик событий к событию. yii\base\Component
redirect() Перенаправляет браузер на указанный URL. yii\web\Response
refresh() Обновляет текущую страницу. yii\web\Response
send() Отправляет ответ клиенту. yii\web\Response
sendContentAsFile() Отправляет указанное содержимое как файл в браузер. yii\web\Response
sendFile() Отправляет файл в браузер. yii\web\Response
sendStreamAsFile() Отправляет указанный поток как файл в браузер. yii\web\Response
setDownloadHeaders() Устанавливает набор стандартных HTTP-заголовков для целей загрузки файла. yii\web\Response
setStatusCode() Устанавливает код состояния ответа. yii\web\Response
setStatusCodeByException() Устанавливает код состояния ответа на основе исключения. yii\web\Response
trigger() Вызывает событие. yii\base\Component
xSendFile() Отправляет существующий файл в браузер как загрузку с помощью x-sendfile. yii\web\Response

Защищённые методы

Метод Описание Определено в
defaultFormatters() yii\web\Response
getDispositionHeaderValue() Возвращает значение заголовка Content-Disposition, безопасное для использования как в старых, так и в новых браузерах yii\web\Response
getHttpRange() Определяет диапазон HTTP, заданный в запросе. yii\web\Response
prepare() Подготавливает ответ к отправке. yii\web\Response
sendContent() Отправляет содержимое ответа клиенту yii\web\Response
sendCookies() Отправляет куки клиенту. yii\web\Response
sendHeaders() Отправляет заголовки ответа клиенту yii\web\Response

События

Событие Тип Описание Определено в
EVENT_AFTER_PREPARE \yii\web\ResponseEvent Событие, которое срабатывает сразу после вызова prepare() в send(). yii\web\Response
EVENT_AFTER_SEND \yii\web\ResponseEvent Событие, которое срабатывает в конце send(). yii\web\Response
EVENT_BEFORE_SEND \yii\web\ResponseEvent Событие, которое срабатывает в начале send(). yii\web\Response

Константы

Константа Значение Описание Определено в
FORMAT_HTML 'html' yii\web\Response
FORMAT_JSON 'json' yii\web\Response
FORMAT_JSONP 'jsonp' yii\web\Response
FORMAT_RAW 'raw' yii\web\Response
FORMAT_XML 'xml' yii\web\Response

Подробности свойств

$acceptMimeType свойство public

Тип MIME (например, application/json) из заголовка ACCEPT запроса, выбранный для этого ответа. Это свойство главным образом устанавливается yii\filters\ContentNegotiator.

public string $acceptMimeType = null

$acceptParams свойство public

Параметры (например, ['q' => 1, 'version' => '1.0']) связанные с выбранным типом MIME. Это список пар имя-значение, связанных с $acceptMimeType из заголовка ACCEPT HTTP. Это свойство главным образом устанавливается yii\filters\ContentNegotiator.

public array $acceptParams = []

$charset свойство public

Кодировка символов текстового ответа. Если не задано, используется значение yii\web\Application::$charset.

public string $charset = null

$content свойство public

Содержимое ответа. Когда $data не равно null, оно преобразуется в $content в соответствии с $format при отправке ответа.

См. также $data.

public string $content = null

$cookies свойство public (только для чтения)

Коллекция куки.

public yii\web\CookieCollection getCookies ( )

$data свойство public

Исходные данные ответа. Когда это не равно null, оно преобразуется в $content в соответствии с $format при отправке ответа.

См. также $content.

public mixed $data = null

$downloadHeaders свойство public (только для записи)

Имя файла для загрузки.

public $this setDownloadHeaders ( $attachmentName, $mimeType = null, $inline = false, $contentLength = null )

$format свойство public

Формат ответа. Это определяет, как преобразовать $data в $content, когда последний не установлен. Значение этого свойства должно быть одним из ключей, объявленных в массиве $formatters. По умолчанию поддерживаются следующие форматы:

  • FORMAT_RAW: данные будут интерпретированы как содержимое ответа без преобразования. Дополнительный HTTP-заголовок не будет добавлен.
  • FORMAT_HTML: данные будут интерпретированы как содержимое ответа без преобразования. Заголовок "Content-Type" будет установлен как "text/html".
  • FORMAT_JSON: данные будут преобразованы в формате JSON, и заголовок "Content-Type" будет установлен как "application/json".
  • FORMAT_JSONP: данные будут преобразованы в формате JSONP, и заголовок "Content-Type" будет установлен как "text/javascript". Обратите внимание, что в этом случае $data должен быть массивом с элементами "data" и "callback". Первый ссылается на фактические данные для отправки, а второй — на имя JavaScript-обработчика.
  • FORMAT_XML: данные будут преобразованы в формате XML. Подробнее см. yii\web\XmlResponseFormatter.

Вы можете настроить процесс форматирования или добавить дополнительные форматы, настроив $formatters.

См. также $formatters.

public string $format = self::FORMAT_HTML

$formatters свойство public

Форматировщики для преобразования данных в содержимое ответа указанного $format. Ключами массива являются имена форматов, а значениями — соответствующие настройки для создания объектов форматировщика.

См. также:

  • $format
  • defaultFormatters()
public array $formatters = []

$headers свойство public (только для чтения)

Коллекция заголовков

public yii\web\HeaderCollection getHeaders ( )

$httpStatuses свойство public static

Список кодов HTTP-статусов и соответствующих текстов

public static array $httpStatuses = [100 => 'Continue', 101 => 'Switching Protocols', 102 => 'Processing', 118 => 'Connection timed out', 200 => 'OK', 201 => 'Created', 202 => 'Accepted', 203 => 'Non-Authoritative', 204 => 'No Content', 205 => 'Reset Content', 206 => 'Partial Content', 207 => 'Multi-Status', 208 => 'Already Reported', 210 => 'Content Different', 226 => 'IM Used', 300 => 'Multiple Choices', 301 => 'Moved Permanently', 302 => 'Found', 303 => 'See Other', 304 => 'Not Modified', 305 => 'Use Proxy', 306 => 'Reserved', 307 => 'Temporary Redirect', 308 => 'Permanent Redirect', 310 => 'Too many Redirect', 400 => 'Bad Request', 401 => 'Unauthorized', 402 => 'Payment Required', 403 => 'Forbidden', 404 => 'Not Found', 405 => 'Method Not Allowed', 406 => 'Not Acceptable', 407 => 'Proxy Authentication Required', 408 => 'Request Time-out', 409 => 'Conflict', 410 => 'Gone', 411 => 'Length Required', 412 => 'Precondition Failed', 413 => 'Request Entity Too Large', 414 => 'Request-URI Too Long', 415 => 'Unsupported Media Type', 416 => 'Requested range unsatisfiable', 417 => 'Expectation failed', 418 => 'I\'m a teapot', 421 => 'Misdirected Request', 422 => 'Unprocessable entity', 423 => 'Locked', 424 => 'Method failure', 425 => 'Unordered Collection', 426 => 'Upgrade Required', 428 => 'Precondition Required', 429 => 'Too Many Requests', 431 => 'Request Header Fields Too Large', 449 => 'Retry With', 450 => 'Blocked by Windows Parental Controls', 451 => 'Unavailable For Legal Reasons', 500 => 'Internal Server Error', 501 => 'Not Implemented', 502 => 'Bad Gateway or Proxy Error', 503 => 'Service Unavailable', 504 => 'Gateway Time-out', 505 => 'HTTP Version not supported', 507 => 'Insufficient storage', 508 => 'Loop Detected', 509 => 'Bandwidth Limit Exceeded', 510 => 'Not Extended', 511 => 'Network Authentication Required']

$isClientError свойство public (только для чтения)

Указывает, является ли этот ответ ошибкой клиента

public boolean getIsClientError ( )

$isEmpty свойство public (только для чтения)

Является ли этот ответ пустым

public boolean getIsEmpty ( )

$isForbidden свойство public (только для чтения)

Указывает, является ли запрос запрещённым

public boolean getIsForbidden ( )

$isInformational свойство public (только для чтения)

Является ли этот ответ информационным

public boolean getIsInformational ( )

$isInvalid свойство public (только для чтения)

Содержит ли этот ответ валидный $statusCode.

public boolean getIsInvalid ( )

$isNotFound свойство public (только для чтения)

Указывает, является ли запрашиваемый ресурс не найден

public boolean getIsNotFound ( )

$isOk свойство public (только для чтения)

Является ли этот ответ успешным

public boolean getIsOk ( )

$isRedirection свойство public (только для чтения)

Является ли этот ответ перенаправлением

public boolean getIsRedirection ( )

$isSent свойство public

Отправлен ли ответ. Если это true, вызов send() ничего не сделает.

public boolean $isSent = false

$isServerError свойство public (только для чтения)

Указывает, является ли этот ответ ошибкой сервера

public boolean getIsServerError ( )

$isSuccessful свойство public (только для чтения)

Является ли этот ответ успешным

public boolean getIsSuccessful ( )

$statusCode свойство public

Код состояния HTTP, который следует отправить вместе с ответом.

public integer getStatusCode ( )
public $this setStatusCode ( $value, $text = null )

$statusCodeByException свойство для записи

Объект исключения.

public $this setStatusCodeByException ( $e )

$statusText свойство

Описание состояния HTTP, которое передается вместе с кодом состояния.

См. также $httpStatuses.

public string $statusText = 'OK'

$stream свойство

Поток, который нужно отправить. Это может быть дескриптор потока или массив дескрипторов потока, начальная и конечная позиции. Обратите внимание, что при установке этого свойства свойства $data и $content будут проигнорированы методом send().

public resource|array $stream = null

$version свойство

Версия протокола HTTP, которую следует использовать. Если не задана, она будет определена через $_SERVER['SERVER_PROTOCOL'], или '1.1', если это недоступно.

public string $version = null

Подробное описание методов

clear() public method

Очищает заголовки, cookie, содержимое, код состояния ответа.

public void clear ( )

defaultFormatters() protected method

protected array defaultFormatters ( )
return array

Форматтеры, поддерживаемые по умолчанию

getCookies() public method

Возвращает коллекцию cookie.

Через возвращаемую коллекцию cookie вы можете добавлять или удалять cookie следующим образом:

// add a cookie
$response->cookies->add(new Cookie([
    'name' => $name,
    'value' => $value,
]);

// remove a cookie
$response->cookies->remove('name');
// alternatively
unset($response->cookies['name']);
public yii\web\CookieCollection getCookies ( )
return yii\web\CookieCollection

Коллекция cookie.

getDispositionHeaderValue() protected method (available since version 2.0.10)

Возвращает значение заголовка Content-Disposition, которое безопасно для использования как со старыми, так и с новыми браузерами

Запасное имя:

  • Вызывает проблемы, если содержит не-ASCII символы с кодами меньше 32 или больше 126.
  • Вызывает проблемы, если содержит URL-кодированные символы (начиная с %) или % символ. Некоторые браузеры интерпретируют filename="X" как URL-кодированное имя, некоторые нет.
  • Вызывает проблемы, если содержит разделители путей, такие как \ или /.
  • Поскольку значение заключено в ", его следует экранировать как \".
  • Поскольку входные данные могут содержать не-ASCII символы, резервное значение получается путём транслитерации.

UTF имя:

  • Вызывает проблемы, если содержит разделители путей, такие как \ или /.
  • Должно быть URL-кодировано, поскольку заголовки являются только ASCII.
  • Может быть опущено, если точно совпадает с резервным именем.
protected string getDispositionHeaderValue ( $disposition, $attachmentName )
$disposition string
$attachmentName string

getHeaders() public method

Возвращает коллекцию заголовков.

Коллекция заголовков содержит текущие зарегистрированные HTTP-заголовки.

public yii\web\HeaderCollection getHeaders ( )
return yii\web\HeaderCollection

Коллекция заголовков

getHttpRange() protected method

Определяет HTTP-диапазон, указанный в запросе.

protected array|boolean getHttpRange ( $fileSize )
$fileSize integer

Размер файла, который будет использован для проверки запрошенного HTTP-диапазона.

return array|boolean

Диапазон (начало, конец) или false, если запрос диапазона недействителен.

getIsClientError() public method

public boolean getIsClientError ( )
return boolean

Указывает ли этот ответ на ошибку клиента

getIsEmpty() public method

public boolean getIsEmpty ( )
return boolean

Является ли этот ответ пустым

getIsForbidden() public method

public boolean getIsForbidden ( )
return boolean

Указывает ли этот ответ на то, что текущий запрос запрещён

getIsInformational() public method

public boolean getIsInformational ( )
return boolean

Является ли этот ответ информационным

getIsInvalid() public method

public boolean getIsInvalid ( )
return boolean

Имеет ли этот ответ допустимый $statusCode.

getIsNotFound() public method

public boolean getIsNotFound ( )
return boolean

Указывает ли этот ответ на то, что запрашиваемый ресурс не найден

getIsOk() public method

public boolean getIsOk ( )
return boolean

Является ли этот ответ OK

getIsRedirection() public method

public boolean getIsRedirection ( )
return boolean

Является ли этот ответ перенаправлением

getIsServerError() public method

public boolean getIsServerError ( )
return boolean

Указывает ли этот ответ на ошибку сервера

getIsSuccessful() public method

public boolean getIsSuccessful ( )
return boolean

Является ли этот ответ успешным

getStatusCode() public method

public integer getStatusCode ( )
return integer

HTTP-код состояния, который нужно отправить с ответом.

init() public method

Инициализирует этот компонент.

public void init ( )

prepare() protected method

Готовит отправку ответа.

Реализация по умолчанию преобразует $data в $content и устанавливает заголовки соответствующим образом.

protected void prepare ( )
throws yii\base\InvalidConfigException

если форматировщик для указанного формата недействителен или $format не поддерживается

redirect() public method

Перенаправляет браузер на указанный URL.

Этот метод добавляет заголовок "Location" к текущему ответу. Обратите внимание, что он не отправляет заголовок до тех пор, пока не будет вызван send(). В действии контроллера вы можете использовать этот метод следующим образом:

return Yii::$app->getResponse()->redirect($url);

В других местах, если вы хотите немедленно отправить заголовок "Location", вы должны использовать следующий код:

Yii::$app->getResponse()->redirect($url)->send();
return;

В режиме AJAX это обычно не будет работать должным образом, если не предусмотрено обработка перенаправления на стороне клиента с помощью JavaScript-кода. Чтобы достичь этой цели, этот метод будет отправлять заголовок «X-Redirect» вместо «Location».

Если вы используете модуль JavaScript «yii», он будет обрабатывать AJAX-перенаправление, как описано выше. В противном случае, вам необходимо написать следующий JavaScript-код для обработки перенаправления:

$document.ajaxComplete(function (event, xhr, settings) {
    var url = xhr && xhr.getResponseHeader('X-Redirect');
    if (url) {
        window.location = url;
    }
});
public $this redirect ( $url, $statusCode = 302, $checkAjax = true )
$url строка|массив

URL, на который необходимо перенаправить. Он может быть представлен в одном из следующих форматов:

  • строка, представляющая URL (например, "http://example.com")
  • строка, представляющая алиас URL (например, "@example.com")
  • массив в формате [$route, ...name-value pairs...] (например, ['site/index', 'ref' => 1]). Обратите внимание, что маршрут относится ко всему приложению, а не относительно контроллера или модуля. Будет использоваться yii\helpers\Url::to() для преобразования массива в URL.

Любой относительный URL, начинающийся с одиночного слеша "/", будет преобразован в абсолютный, путем добавления к нему информации о хосте текущего запроса.

$statusCode целое число

Код HTTP-статуса. По умолчанию 302. Подробности о кодах HTTP-статуса см. в http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html

$checkAjax логическое значение

Определяет, следует ли обрабатывать запросы AJAX (и PJAX). По умолчанию значение true, что означает, что если текущий запрос является AJAX или PJAX, вызов этого метода вызовет перенаправление браузера на указанный URL. Если значение false, то будет отправлен заголовок Location, который, при получении как AJAX/PJAX-ответ, может НЕ вызвать перенаправление браузера. Действует только если отсутствует заголовок запроса X-Ie-Redirect-Compatibility.

return $this

Объект ответа

refresh() метод public

Обновляет текущую страницу.

Действие этого метода эквивалентно нажатию пользователем кнопки обновления браузера (без повторной отправки данных).

В действии контроллера вы можете использовать этот метод так:

return Yii::$app->getResponse()->refresh();
public yii\web\Response refresh ( $anchor = '' )
$anchor строка

Якорная ссылка, которая должна быть добавлена к URL перенаправления. По умолчанию пустая. Убедитесь, что якорная ссылка начинается с '#' если вы хотите ее указать.

return yii\web\Response

Объект ответа

send() метод public

Отправляет ответ клиенту.

public void send ( )

sendContent() метод protected

Отправляет содержимое ответа клиенту

protected void sendContent ( )

sendContentAsFile() метод public

Отправляет указанное содержимое как файл в браузер.

Обратите внимание, что этот метод только подготавливает ответ для отправки файла. Файл не отправляется до тех пор, пока явным или неявным образом не будет вызван send(). Последнее выполняется после возвращения из действия контроллера.

См. также sendFile() для примера реализации.

public $this sendContentAsFile ( $content, $attachmentName, $options = [] )
$content строка

Содержимое, которое необходимо отправить. Существующее $content будет отброшено.

$attachmentName строка

Имя файла, отображаемое пользователю.

$options массив

Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:

  • mimeType: тип MIME содержимого. По умолчанию 'application/octet-stream'.
  • inline: логическое значение, указывает, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает, что появится диалоговое окно загрузки.
return $this

Объект ответа

throws yii\web\RangeNotSatisfiableHttpException

если запрошенный диапазон недоступен

sendCookies() метод protected

Отправляет куки клиенту.

protected void sendCookies ( )

sendFile() метод public

Отправляет файл в браузер.

Обратите внимание, что этот метод только подготавливает ответ для отправки файла. Файл не отправляется до тех пор, пока явным или неявным образом не будет вызван send(). Последнее выполняется после возвращения из действия контроллера.

Следующая реализация действия контроллера позволяет запрашивать файлы из каталога, который недоступен из веб-приложения:

public function actionFile($filename)
{
    $storagePath = Yii::getAlias('@app/files');

    // check filename for allowed chars (do not allow ../ to avoid security issue: downloading arbitrary files)
    if (!preg_match('/^[a-z0-9]+\.[a-z0-9]+$/i', $filename) || !is_file("$storagePath/$filename")) {
        throw new \yii\web\NotFoundHttpException('The file does not exists.');
    }
    return Yii::$app->response->sendFile("$storagePath/$filename", $filename);
}

См. также:

  • sendContentAsFile()
  • sendStreamAsFile()
  • xSendFile()
public $this sendFile ( $filePath, $attachmentName = null, $options = [] )
$filePath строка

Путь к файлу, который необходимо отправить.

$attachmentName строка

Имя файла, отображаемое пользователю. Если null, оно будет определено из $filePath.

$options массив

Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:

  • mimeType: тип MIME содержимого. Если не задано, он будет определен на основе $filePath
  • inline: логическое значение, указывает, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает, что появится диалоговое окно загрузки.
return $this

Объект ответа

sendHeaders() метод protected

Отправляет заголовки ответа клиенту

protected void sendHeaders ( )

sendStreamAsFile() метод public

Отправляет указанный поток как файл в браузер.

Обратите внимание, что этот метод только подготавливает ответ для отправки файла. Файл не отправляется до тех пор, пока явным или неявным образом не будет вызван send(). Последнее выполняется после возвращения из действия контроллера.

См. также sendFile() для примера реализации.

public $this sendStreamAsFile ( $handle, $attachmentName, $options = [] )
$handle ресурс

Дескриптор потока, который необходимо отправить.

$attachmentName строка

Имя файла, отображаемое пользователю.

$options массив

Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:

  • mimeType: тип MIME содержимого. По умолчанию 'application/octet-stream'.
  • inline: логическое значение, указывает, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает, что появится диалоговое окно загрузки.
  • fileSize: размер содержимого для потоковой передачи, полезно, когда размер содержимого известен и содержимое не может быть перемотано. По умолчанию размер содержимого определяется функцией ftell(). Доступно начиная с версии 2.0.4.
return $this

Объект ответа

throws yii\web\RangeNotSatisfiableHttpException

если запрошенный диапазон недоступен

setDownloadHeaders() метод public

Устанавливает набор заголовков HTTP по умолчанию для загрузки файлов.

public $this setDownloadHeaders ( $attachmentName, $mimeType = null, $inline = false, $contentLength = null )
$attachmentName строка

Имя файла для прикрепления

$mimeType строка

Тип MIME для ответа. Если null, заголовок Content-Type НЕ будет установлен.

$inline булево значение

Определяет, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает открытие диалогового окна загрузки.

$contentLength целое число

Длина файла в байтах, загружаемого пользователем. Если null, заголовок Content-Length НЕ будет установлен.

return $this

Объект ответа

setStatusCode() public method

Устанавливает код состояния ответа.

Этот метод установит соответствующий текст состояния, если $text равен null.

public $this setStatusCode ( $value, $text = null )
$value целое число

Код состояния

$text строка

Текст состояния. Если не задан, он будет автоматически установлен на основе кода состояния.

return $this

Объект ответа

throws yii\base\InvalidParamException

если код состояния некорректен.

setStatusCodeByException() public method (доступно с версии 2.0.12)

Устанавливает код состояния ответа на основе исключения.

public $this setStatusCodeByException ( $e )
$e Исключение|\Error

Объект исключения.

return $this

Объект ответа

throws yii\base\InvalidParamException

если код состояния некорректен.

xSendFile() public method

Отправляет существующий файл в браузер для загрузки с использованием x-sendfile.

X-Sendfile — это функция, позволяющая веб-приложению перенаправлять запрос на файл веб-серверу, который обрабатывает запрос, тем самым устраняя необходимость выполнения задач, таких как чтение файла и отправка его пользователю. При работе с большим количеством файлов (или очень большими файлами) это может значительно повысить производительность, поскольку веб-приложение может завершить работу раньше, в то время как веб-сервер обрабатывает запрос.

Запрос отправляется на сервер через специальный нестандартный HTTP-заголовок. Когда веб-сервер обнаруживает наличие такого заголовка, он отбрасывает весь вывод и отправляет файл, указанный в этом заголовке, используя внутренние возможности веб-сервера, включая все оптимизации, такие как кэширующие заголовки.

Так как эта директива заголовка нестандартна, для разных веб-серверов существуют разные директивы:

  • Apache: X-Sendfile
  • Lighttpd v1.4: X-LIGHTTPD-send-file
  • Lighttpd v1.5: X-Sendfile
  • Nginx: X-Accel-Redirect
  • Cherokee: X-Sendfile и X-Accel-Redirect

Для работы этого метода модуль X-SENDFILE должен быть включен на веб-сервере, и должен быть отправлен соответствующий заголовок.

Примечание

Этот параметр позволяет загружать файлы, которые не находятся в каталогах веб-сервера, а также файлы, которые в противном случае защищены (запрещены для всех), например .htaccess.

Возможные последствия

Если этот параметр отключен на веб-сервере, при вызове этого метода откроется диалоговое окно конфигурации загрузки, но загруженный файл будет иметь размер 0 байт.

Известные проблемы

Существует ошибка в Internet Explorer 6, 7 и 8 при использовании X-SENDFILE через SSL-соединение, которая может отображать сообщение об ошибке: "Internet Explorer не смог открыть этот веб-сайт. Запрашиваемый сайт недоступен или не найден". Вы можете обойти эту проблему, удалив заголовок Pragma.

Пример

Yii::$app->response->xSendFile('/home/user/Pictures/picture1.jpg');

См. также sendFile().

public $this xSendFile ( $filePath, $attachmentName = null, $options = [] )
$filePath строка

Полное имя файла с путем

$attachmentName строка

Имя файла, отображаемое пользователю. Если null, оно будет определено из $filePath.

$options массив

Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:

  • mimeType: тип MIME содержимого. Если не задан, он будет определен на основе $filePath
  • inline: булево значение, определяющее, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает открытие диалогового окна загрузки.
  • xHeader: строка, имя заголовка x-sendfile. По умолчанию "X-Sendfile".
return $this

Объект ответа

Подробности событий

EVENT_AFTER_PREPARE событие типа \yii\web\ResponseEvent

Событие, которое срабатывает сразу после вызова prepare() в send(). Вы можете отреагировать на это событие, чтобы отфильтровать содержимое ответа перед отправкой клиенту.

EVENT_AFTER_SEND событие типа \yii\web\ResponseEvent

Событие, которое срабатывает в конце send().

EVENT_BEFORE_SEND событие типа \yii\web\ResponseEvent

Событие, которое срабатывает в начале send().

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-web-response.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API