Класс 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. Ключами массива являются имена форматов, а значениями — соответствующие настройки для создания объектов форматировщика.
См. также:
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, начинающийся с одиночного слеша "/", будет преобразован в абсолютный, путем добавления к нему информации о хосте текущего запроса. |
| $statusCode | целое число |
Код HTTP-статуса. По умолчанию 302. Подробности о кодах HTTP-статуса см. в http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html |
| $checkAjax | логическое значение |
Определяет, следует ли обрабатывать запросы AJAX (и PJAX). По умолчанию значение true, что означает, что если текущий запрос является AJAX или PJAX, вызов этого метода вызовет перенаправление браузера на указанный URL. Если значение false, то будет отправлен заголовок |
| 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 | массив |
Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:
|
| 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);
}
См. также:
| public $this sendFile ( $filePath, $attachmentName = null, $options = [] ) | ||
|---|---|---|
| $filePath | строка |
Путь к файлу, который необходимо отправить. |
| $attachmentName | строка |
Имя файла, отображаемое пользователю. Если null, оно будет определено из |
| $options | массив |
Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:
|
| return | $this |
Объект ответа |
sendHeaders() метод protected
Отправляет заголовки ответа клиенту
| protected void sendHeaders ( ) |
|---|
sendStreamAsFile() метод public
Отправляет указанный поток как файл в браузер.
Обратите внимание, что этот метод только подготавливает ответ для отправки файла. Файл не отправляется до тех пор, пока явным или неявным образом не будет вызван send(). Последнее выполняется после возвращения из действия контроллера.
См. также sendFile() для примера реализации.
| public $this sendStreamAsFile ( $handle, $attachmentName, $options = [] ) | ||
|---|---|---|
| $handle | ресурс |
Дескриптор потока, который необходимо отправить. |
| $attachmentName | строка |
Имя файла, отображаемое пользователю. |
| $options | массив |
Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:
|
| return | $this |
Объект ответа |
| throws | yii\web\RangeNotSatisfiableHttpException |
если запрошенный диапазон недоступен |
setDownloadHeaders() метод public
Устанавливает набор заголовков HTTP по умолчанию для загрузки файлов.
| public $this setDownloadHeaders ( $attachmentName, $mimeType = null, $inline = false, $contentLength = null ) | ||
|---|---|---|
| $attachmentName | строка |
Имя файла для прикрепления |
| $mimeType | строка |
Тип MIME для ответа. Если null, заголовок |
| $inline | булево значение |
Определяет, должен ли браузер открыть файл в окне браузера. По умолчанию false, что означает открытие диалогового окна загрузки. |
| $contentLength | целое число |
Длина файла в байтах, загружаемого пользователем. Если null, заголовок |
| 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, оно будет определено из |
| $options | массив |
Дополнительные параметры для отправки файла. Поддерживаются следующие параметры:
|
| 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