Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
Y
yii2
Project
Overview
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
PSDI Army
yii2
Commits
89d1dde9
Commit
89d1dde9
authored
Nov 27, 2014
by
Alexander Makarov
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Edited Russian translation of Responses
parent
a24cab54
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
70 additions
and
69 deletions
+70
-69
runtime-responses.md
docs/guide-ru/runtime-responses.md
+70
-69
No files found.
docs/guide-ru/runtime-responses.md
View file @
89d1dde9
Ответы
Ответы
======
===
======
Когда приложение заканчивает обработку
[
запроса
](
runtime-requests.md
)
, оно генерирует объект
[
[yii\web\Response|ответа
]
]
Когда приложение заканчивает обработку
[
запроса
](
runtime-requests.md
)
, оно генерирует объект
[
[yii\web\Response|ответа
]
]
и отправляет его
конечному
пользователю. Объект ответа содержит такие данные, как HTTP-код состояния, HTTP-заголовки и тело ответа.
и отправляет его пользователю. Объект ответа содержит такие данные, как HTTP-код состояния, HTTP-заголовки и тело ответа.
По существу, конечная цель разработки Web-приложения — создание таких
объектов ответа на различные запросы.
Конечная цель разработки Web-приложения состоит в создании
объектов ответа на различные запросы.
В большинстве случаев вам придется иметь дело
в основном
с
[
компонентом приложения
](
structure-application-components.md
)
`response`
,
В большинстве случаев вам придется иметь дело с
[
компонентом приложения
](
structure-application-components.md
)
`response`
,
который по умолчанию является экземпляром класса
[
[yii\web\Response
]
]. Однако Yii также позволяет вам создавать собственные
объекты ответа
который по умолчанию является экземпляром класса
[
[yii\web\Response
]
]. Однако Yii также позволяет вам создавать собственные
и отправлять их конечным пользователям, как
будет рассмотрено ниже.
объекты ответа и отправлять их пользователям. Это
будет рассмотрено ниже.
В данном разделе мы опишем, как составлять ответы и отправлять их
конечным
пользователям.
В данном разделе мы опишем, как составлять ответы и отправлять их пользователям.
## Код состояния <a name="status-code"></a>
## Код состояния <a name="status-code"></a>
Одна из первых вещей, которые вы делаете при построении ответа, — это определение того, был ли успешно обработан запрос.
Первое, что вы делаете при построении ответа, — определяете, был ли успешно обработан запрос. Это реализуется заданием
Это делается путём установки свойства
[
[yii\web\Response::statusCode
]
], которое может принимать значение одного из валидных
свойству
[
[yii\web\Response::statusCode
]
] значения, которое может быть одним из валидных
[
HTTP-кодов состояния
](
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
)
. Например, чтобы показать, что запрос был
[
HTTP-кодов состояния
](
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
)
. Например, чтобы показать, что запрос был
успешно обработан, вы можете установить значение кода состояния равным 200
, вот так
:
успешно обработан, вы можете установить значение кода состояния равным 200:
```
php
```
php
Yii
::
$app
->
response
->
statusCode
=
200
;
Yii
::
$app
->
response
->
statusCode
=
200
;
```
```
Однако в большинстве случаев
вам не нужно явно устанавливать значение кода состояния. Дело в том, что значение свойства
Однако в большинстве случаев
явная установка не требуется так как значение
[
[yii\web\Response::statusCode
]
]
[
[yii\web\Response::statusCode
]
] по умолчанию равно 200. А если вам нужно показать, что запрос не имел успеха, вы может
е
по умолчанию равно 200. Если же вам нужно показать, что запрос не удался, вы можете выбросить соответствующе
е
выбросить соответствующее HTTP-исключение, как показано здесь
:
HTTP-исключение
:
```
php
```
php
throw
new
\yii\web\NotFoundHttpException
;
throw
new
\yii\web\NotFoundHttpException
;
...
@@ -33,7 +33,7 @@ throw new \yii\web\NotFoundHttpException;
...
@@ -33,7 +33,7 @@ throw new \yii\web\NotFoundHttpException;
Когда
[
обработчик ошибок
](
runtime-handling-errors.md
)
поймает исключение, он извлечёт код состояния
Когда
[
обработчик ошибок
](
runtime-handling-errors.md
)
поймает исключение, он извлечёт код состояния
из исключения и назначит его ответу. Исключение
[
[yii\web\NotFoundHttpException
]
] в коде выше
из исключения и назначит его ответу. Исключение
[
[yii\web\NotFoundHttpException
]
] в коде выше
связано с HTTP-кодом
состояния 404. В Yii предопределены следующие HTTP-исключения:
представляет HTTP-код
состояния 404. В Yii предопределены следующие HTTP-исключения:
*
[
[yii\web\BadRequestHttpException
]
]: код состояния 400.
*
[
[yii\web\BadRequestHttpException
]
]: код состояния 400.
*
[
[yii\web\ConflictHttpException
]
]: код состояния 409.
*
[
[yii\web\ConflictHttpException
]
]: код состояния 409.
...
@@ -47,7 +47,7 @@ throw new \yii\web\NotFoundHttpException;
...
@@ -47,7 +47,7 @@ throw new \yii\web\NotFoundHttpException;
*
[
[yii\web\UnauthorizedHttpException
]
]: код состояния 401.
*
[
[yii\web\UnauthorizedHttpException
]
]: код состояния 401.
*
[
[yii\web\UnsupportedMediaTypeHttpException
]
]: код состояния 415.
*
[
[yii\web\UnsupportedMediaTypeHttpException
]
]: код состояния 415.
Если в
вышеприведённом
списке нет исключения, которое вы хотите выбросить, вы можете создать его, расширив класс
Если в
приведённом выше
списке нет исключения, которое вы хотите выбросить, вы можете создать его, расширив класс
[
[yii\web\HttpException
]
], или выбросить его напрямую с кодом состояния, например:
[
[yii\web\HttpException
]
], или выбросить его напрямую с кодом состояния, например:
```
php
```
php
...
@@ -57,8 +57,7 @@ throw new \yii\web\HttpException(402);
...
@@ -57,8 +57,7 @@ throw new \yii\web\HttpException(402);
## HTTP-заголовки <a name="http-headers"></a>
## HTTP-заголовки <a name="http-headers"></a>
Вы можете отправлять HTTP-заголовки, управляя
[
[yii\web\Response::headers|набором заголовков
]
] компонента
`response`
.
Вы можете отправлять HTTP-заголовки, работая с
[
[yii\web\Response::headers|коллекцией заголовков
]
] компонента
`response`
:
Например:
```
php
```
php
$headers
=
Yii
::
$app
->
response
->
headers
;
$headers
=
Yii
::
$app
->
response
->
headers
;
...
@@ -69,28 +68,28 @@ $headers->add('Pragma', 'no-cache');
...
@@ -69,28 +68,28 @@ $headers->add('Pragma', 'no-cache');
// установить заголовок Pragma. Любые уже имеющиеся Pragma-заголовки будут сброшены.
// установить заголовок Pragma. Любые уже имеющиеся Pragma-заголовки будут сброшены.
$headers
->
set
(
'Pragma'
,
'no-cache'
);
$headers
->
set
(
'Pragma'
,
'no-cache'
);
// удалить заголовок (или заголовки) Pragma и вернуть
значения удалённых Pragma-заголовков в массиве
// удалить заголовок (или заголовки) Pragma и вернуть
их значения массивом
$values
=
$headers
->
remove
(
'Pragma'
);
$values
=
$headers
->
remove
(
'Pragma'
);
```
```
> Информация: названия заголовков не чувствительны к регистру символов. Заново зарегистрированные заголовки не отсылаются
пользователю
> Информация: названия заголовков не чувствительны к регистру символов. Заново зарегистрированные заголовки не отсылаются
до тех пор, пока не будет вызван метод
[
[yii\web\Response::send()
]
].
пользователю до вызова
[
[yii\web\Response::send()
]
].
## Тело ответа <a name="response-body"></a>
## Тело ответа <a name="response-body"></a>
Большинство ответов должны иметь тело,
несущее содержимое, которое вы хотите показать конечным
пользователям.
Большинство ответов должны иметь тело,
содержащее то, что вы хотите показать
пользователям.
Если у вас уже имеется отформатированная строка
тела, вы можете назнач
ить её свойству
[
[yii\web\Response::content
]
]
Если у вас уже имеется отформатированная строка
для тела, вы можете присво
ить её свойству
[
[yii\web\Response::content
]
]
объекта запроса
. Например
:
объекта запроса:
```
php
```
php
Yii
::
$app
->
response
->
content
=
'hello world!'
;
Yii
::
$app
->
response
->
content
=
'hello world!'
;
```
```
Если ваши данные перед отправкой конечным пользователям нужно привести к определённому формату, вам следует установить значения
Если ваши данные перед отправкой конечным пользователям нужно привести к определённому формату, вам следует установить значения
двух свойств:
[
[yii\web\Response::format|
формат
]
] и
[
[yii\web\Response::data|данные
]
]. Свойство
[
[yii\web\Response::format|формат
]
]
двух свойств:
[
[yii\web\Response::format|
format
]
] и
[
[yii\web\Response::data|data
]
]. Свойство
[
[yii\web\Response::format|format
]
]
определяет, в каком формате следует возвращать
[
[yii\web\Response::data|данные
]
]. Например:
определяет, в каком формате следует возвращать
данные из
[
[yii\web\Response::data|data
]
]. Например:
```
php
```
php
$response
=
Yii
::
$app
->
response
;
$response
=
Yii
::
$app
->
response
;
...
@@ -99,14 +98,14 @@ $response->data = ['message' => 'hello world'];
...
@@ -99,14 +98,14 @@ $response->data = ['message' => 'hello world'];
```
```
Yii из коробки имеет поддержку следующих форматов, каждый из которых реализован классом
[
[yii\web\ResponseFormatterInterface|форматтера
]
].
Yii из коробки имеет поддержку следующих форматов, каждый из которых реализован классом
[
[yii\web\ResponseFormatterInterface|форматтера
]
].
Вы можете настроить эти форматтеры или добавить новые
путём настройки свойства
[
[yii\web\Response::formatters
]
].
Вы можете настроить эти форматтеры или добавить новые
через свойство
[
[yii\web\Response::formatters
]
].
*
[
[yii\web\Response::FORMAT_HTML|HTML
]
]: реализуется классом
[
[yii\web\HtmlResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_HTML|HTML
]
]: реализуется классом
[
[yii\web\HtmlResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_XML|XML
]
]: реализуется классом
[
[yii\web\XmlResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_XML|XML
]
]: реализуется классом
[
[yii\web\XmlResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_JSON|JSON
]
]: реализуется классом
[
[yii\web\JsonResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_JSON|JSON
]
]: реализуется классом
[
[yii\web\JsonResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_JSONP|JSONP
]
]: реализуется классом
[
[yii\web\JsonResponseFormatter
]
].
*
[
[yii\web\Response::FORMAT_JSONP|JSONP
]
]: реализуется классом
[
[yii\web\JsonResponseFormatter
]
].
Хотя тело запроса может быть явно установлено показанным выше способом, в большинстве случаев вы можете
устанавли
вать его неявно
Хотя тело запроса может быть явно установлено показанным выше способом, в большинстве случаев вы можете
зада
вать его неявно
через возвращаемое значение методов
[
действий
](
structure-controllers.md
)
. Типичный пример использования:
через возвращаемое значение методов
[
действий
](
structure-controllers.md
)
. Типичный пример использования:
```
php
```
php
...
@@ -117,10 +116,10 @@ public function actionIndex()
...
@@ -117,10 +116,10 @@ public function actionIndex()
```
```
Действие
`index`
в коде выше возвращает результат рендеринга представления
`index`
. Возвращаемое значение будет взято
Действие
`index`
в коде выше возвращает результат рендеринга представления
`index`
. Возвращаемое значение будет взято
компонентом
`response`
, отформатировано и затем отправлено
конечным
пользователям.
компонентом
`response`
, отформатировано и затем отправлено пользователям.
Так как по умолчанию форматом ответа является
[
[yii\web\Response::FORMAT_HTML|HTML
]
], в методе действия
достаточно вернуть строку.
Так как по умолчанию форматом ответа является
[
[yii\web\Response::FORMAT_HTML|HTML
]
], в методе действия
следует
Если вы хотите использовать другой формат ответа, нужно сначала установить его перед отправкой данных. Например
:
вернуть строку. Если вы хотите использовать другой формат ответа, необходимо настроить его перед отправкой данных
:
```
php
```
php
public
function
actionInfo
()
public
function
actionInfo
()
...
@@ -133,8 +132,8 @@ public function actionInfo()
...
@@ -133,8 +132,8 @@ public function actionInfo()
}
}
```
```
Как
было сказано выше, кроме использования компонента приложения
`response`
по умолчанию
вы также можете создавать свои
Как
уже было сказано, кроме использования стандартного компонента приложения
`response`
вы также можете создавать свои
объекты ответа и отправлять их конечным пользователям. Вы можете сделать это, возвращая такой объект в методе действия
, например
:
объекты ответа и отправлять их конечным пользователям. Вы можете сделать это, возвращая такой объект в методе действия:
```
php
```
php
public
function
actionInfo
()
public
function
actionInfo
()
...
@@ -151,17 +150,17 @@ public function actionInfo()
...
@@ -151,17 +150,17 @@ public function actionInfo()
```
```
> Примечание: создавая собственные объекты ответов, вы не сможете воспользоваться конфигурацией компонента `response`,
> Примечание: создавая собственные объекты ответов, вы не сможете воспользоваться конфигурацией компонента `response`,
настроенной вами в конфигурации приложения. Тем не менее, вы можете воспользоваться
настроенной вами в конфигурации приложения. Тем не менее, вы можете воспользоваться
[
внедрением зависимости
](
concept-di-container.md
)
, чтобы применить общую конфигурацию к вашим новым объектам ответа.
[
внедрением зависимости
](
concept-di-container.md
)
, чтобы применить общую конфигурацию к вашим новым объектам ответа.
## Перенаправление браузера <a name="browser-redirection"></a>
## Перенаправление браузера <a name="browser-redirection"></a>
Перенаправление браузера основано на отправке HTTP-заголовка
`Location`
. Так как данная
функция широко используется, Yii предоставляет
Перенаправление браузера основано на отправке HTTP-заголовка
`Location`
. Так как данная
возможность широко применяется,
некоторые особые средства для её поддержки
.
Yii имеет средства для её использования
.
Вы можете перенаправить браузер пользователя на URL-адрес, вызвав метод
[
[yii\web\Response::redirect()
]
]. Этот метод
Вы можете перенаправить браузер пользователя на URL-адрес, вызвав метод
[
[yii\web\Response::redirect()
]
]. Этот метод
устанавливает значение заголовка
`Location`
равным указанному URL-адресу
и возвращает сам объект ответа. В методе действия
использует указанный URL-адрес в качестве значения заголовка
`Location`
и возвращает сам объект ответа. В методе действия
вы можете вызвать короткую версию этого метода —
[
[yii\web\Controller::redirect()
]
]. Например:
вы можете вызвать короткую версию этого метода —
[
[yii\web\Controller::redirect()
]
]. Например:
```
php
```
php
...
@@ -171,11 +170,12 @@ public function actionOld()
...
@@ -171,11 +170,12 @@ public function actionOld()
}
}
```
```
В приведённом выше коде метод действия возвращает результат
метода
`redirect()`
. Как говорилось выше, объект ответа,
В приведённом выше коде метод действия возвращает результат
`redirect()`
. Как говорилось выше, объект ответа,
возвращаемый методом действия, будет использоваться
как ответ, отправляемый
конечным пользователям.
возвращаемый методом действия, будет использоваться
в качестве ответа
конечным пользователям.
В коде, находящемся не внутри методов действий, вам следует вызывать
[
[yii\web\Response::redirect()
]
], а непосредственно после него
В коде, находящемся вне методов действий, следует использовать
[
[yii\web\Response::redirect()
]
] и непосредственно после
— метод
[
[yii\web\Response::send()
]
], чтобы быть уверенным, что к ответу не будет добавлено никакое нежелательное содержимое.
него — метод
[
[yii\web\Response::send()
]
]. Так можно быть уверенным, что к ответу не будет добавлено нежелательное
содержимое.
```
php
```
php
\Yii
::
$app
->
response
->
redirect
(
'http://example.com/new'
,
301
)
->
send
();
\Yii
::
$app
->
response
->
redirect
(
'http://example.com/new'
,
301
)
->
send
();
...
@@ -186,27 +186,28 @@ public function actionOld()
...
@@ -186,27 +186,28 @@ public function actionOld()
301, чтобы сообщить браузеру, что ресурс перемещён
*навсегда*
.
301, чтобы сообщить браузеру, что ресурс перемещён
*навсегда*
.
Если текущий запрос является AJAX-запросом, отправка заголовка
`Location`
не заставит браузер автоматически
Если текущий запрос является AJAX-запросом, отправка заголовка
`Location`
не заставит браузер автоматически
осуществить перенаправление. Чтобы решить эту задачу, метод
[
[yii\web\Response::redirect()
]
] устанавливает значение
заголовка
`X-Redirect`
осуществить перенаправление. Чтобы решить эту задачу, метод
[
[yii\web\Response::redirect()
]
] устанавливает значение
равным URL-адресу перенаправления. На стороне клиента вы можете написать JavaScript-код для чтения значения этого заголовка и
заголовка
`X-Redirect`
равным URL для перенаправления. На стороне клиента вы можете написать JavaScript-код для чтения
перенаправления браузера соответственно.
значения этого заголовка и
перенаправления браузера соответственно.
> Информация: Yii поставляется с JavaScript-файлом `yii.js`, который предоставляет набор часто используемых JavaScript-инструментов,
> Информация: Yii поставляется с JavaScript-файлом `yii.js`, который предоставляет набор часто используемых
включая и перенаправление браузера на основе заголовка
`X-Redirect`
. Следовательно, если вы используете этот JavaScript-файл
JavaScript-утилит, включая и перенаправление браузера на основе заголовка
`X-Redirect`
. Следовательно, если вы
(зарегистрировав пакет ресурсов
[
[yii\web\YiiAsset
]
]), вам не нужно писать никакого кода для поддержки AJAX-перенаправления.
используете этот JavaScript-файл (зарегистрировав пакет ресурсов
[
[yii\web\YiiAsset
]
]), вам не нужно писать
дополнительный код для поддержки AJAX-перенаправления.
## Отправка файлов <a name="sending-files"></a>
## Отправка файлов <a name="sending-files"></a>
Как и перенаправление браузера, отправка файлов является ещё одной возможностью, основанной на
специальных HTTP-заголовках. Yii предоставляет
Как и перенаправление браузера, отправка файлов является ещё одной возможностью, основанной на
определённых HTTP-заголовках.
набор методов для поддержки различных потребностей по отправке файлов. У них всех есть встроенная поддержка HTTP-заголовка диапазона
.
Yii предоставляет набор методов для решения различных задач по отправке файлов. Все они поддерживают HTTP-заголовок range
.
*
[
[yii\web\Response::sendFile()
]
]: отправляет клиенту существующий файл.
*
[
[yii\web\Response::sendFile()
]
]: отправляет клиенту существующий файл.
*
[
[yii\web\Response::sendContentAsFile()
]
]: отправляет клиенту
текстовую
строку как файл.
*
[
[yii\web\Response::sendContentAsFile()
]
]: отправляет клиенту строку как файл.
*
[
[yii\web\Response::sendStreamAsFile()
]
]: отправляет клиенту существующий файловый поток как файл.
*
[
[yii\web\Response::sendStreamAsFile()
]
]: отправляет клиенту существующий файловый поток как файл.
Эти методы имеют одинаковую сигнатуру и возвращают объект ответа
как результат. Если отправляемый файл
Эти методы имеют одинаковую сигнатуру и возвращают объект ответа
. Если отправляемый файл очень велик, следует
очень велик, вам следует рассмотреть использование метода
[
[yii\web\Response::sendStreamAsFile()
]
], так как он более
использовать
[
[yii\web\Response::sendStreamAsFile()
]
], так как он более эффективно использует оперативную память.
эффективно использует оперативную память.
Следующий пример показывает, как отправить файл в действии контроллера:
Следующий пример показывает, как отправить файл в действии контроллера:
```
php
```
php
public
function
actionDownload
()
public
function
actionDownload
()
...
@@ -215,18 +216,18 @@ public function actionDownload()
...
@@ -215,18 +216,18 @@ public function actionDownload()
}
}
```
```
При вызове метода отправки файла
извне методов действий вам следует также вызвать сразу после него
При вызове метода отправки файла
вне методов действий чтобы быть уверенным, что к ответу не будет добавлено никакое
метод
[
[yii\web\Response::send()
]
], чтобы быть уверенным, что к ответу не будет добавлено никакое нежелательное содержимое
.
нежелательное содержимое, следует вызвать сразу после него
[
[yii\web\Response::send()
]
]
.
```
php
```
php
\Yii
::
$app
->
response
->
sendFile
(
'path/to/file.txt'
)
->
send
();
\Yii
::
$app
->
response
->
sendFile
(
'path/to/file.txt'
)
->
send
();
```
```
Некоторые Web-серверы поддерживают особый режим отправки файлов, который называется
*X-Sendfile*
. Идея в том, чтобы
Некоторые Web-серверы поддерживают особый режим отправки файлов, который называется
*X-Sendfile*
. Идея в том, чтобы
перенаправить запрос файла
на Web-сервер, который будет непосредственно предоставлять файл
. В результате Web-приложение
перенаправить запрос файла
Web-серверу, который отдаст файл пользователю самостоятельно
. В результате Web-приложение
может завершиться раньше,
тогда как Web-сервер ещё пересылает файл. Чтобы использовать эту возможность, вы можете вызват
ь
может завершиться раньше,
пока Web-сервер ещё пересылает файл. Чтобы использовать эту возможность, воспользуйтес
ь
метод
[
[yii\web\Response::xSendFile()
]
]. Следующий список обобщает шаги по включению возможности
`X-Sendfile`
метод
ом
[
[yii\web\Response::xSendFile()
]
]. Далее приведены ссылки на то, как включить
`X-Sendfile`
для популярных
для некоторых популярных
Web-серверов:
Web-серверов:
-
Apache:
[
X-Sendfile
](
http://tn123.org/mod_xsendfile
)
-
Apache:
[
X-Sendfile
](
http://tn123.org/mod_xsendfile
)
-
Lighttpd v1.4:
[
X-LIGHTTPD-send-file
](
http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file
)
-
Lighttpd v1.4:
[
X-LIGHTTPD-send-file
](
http://redmine.lighttpd.net/projects/lighttpd/wiki/X-LIGHTTPD-send-file
)
...
@@ -237,22 +238,22 @@ public function actionDownload()
...
@@ -237,22 +238,22 @@ public function actionDownload()
## Отправка ответа <a name="sending-response"></a>
## Отправка ответа <a name="sending-response"></a>
Содержимое ответа не отправляется пользователю до
тех пор, пока не будет вызван метод
[
[yii\web\Response::send()
]
].
Содержимое ответа не отправляется пользователю до
вызова метода
[
[yii\web\Response::send()
]
]. По умолчанию он вызывается
По умолчанию данный метод будет вызван автоматически в конце метода
[
[yii\base\Application::run()
]
]. Однако
вы можете
автоматически в конце метода
[
[yii\base\Application::run()
]
]. Однако, чтобы ответ был отправлен немедленно,
вы можете
явно вызвать этот метод, чтобы ответ был отправлен немедлен
но.
вызвать этот метод яв
но.
При отправке
ответа метод
[
[yii\web\Response::send()
]
] выполняет следующие шаги:
Для отправки
ответа метод
[
[yii\web\Response::send()
]
] выполняет следующие шаги:
1.
Инициируется событие
[
[yii\web\Response::EVENT_BEFORE_SEND
]
].
1.
Инициируется событие
[
[yii\web\Response::EVENT_BEFORE_SEND
]
].
2.
Вызывается метод
[
[yii\web\Response::prepare()
]
] для форматирования
[
[yii\web\Response::data|данных ответа
]
] в
2.
Для форматирования
[
[yii\web\Response::data|данных ответа
]
] в
[
[yii\web\Response::content|содержимое ответа
]
]
[
[yii\web\Response::content|содержимое ответа
]
]
.
вызывается метод
[
[yii\web\Response::prepare()
]
]
.
3.
Инициируется событие
[
[yii\web\Response::EVENT_AFTER_PREPARE
]
].
3.
Инициируется событие
[
[yii\web\Response::EVENT_AFTER_PREPARE
]
].
4.
Вызывается метод
[
[yii\web\Response::sendHeaders()
]
] для отправки зарегистрированных HTTP-заголовков
.
4.
Для отправки зарегистрированных HTTP-заголовков вызывается метод
[
[yii\web\Response::sendHeaders()
]
]
.
5.
Вызывается метод
[
[yii\web\Response::sendContent()
]
] для отправки содержимого тела ответа
.
5.
Для отправки тела ответа вызывается метод
[
[yii\web\Response::sendContent()
]
]
.
6.
Инициируется событие
[
[yii\web\Response::EVENT_AFTER_SEND
]
].
6.
Инициируется событие
[
[yii\web\Response::EVENT_AFTER_SEND
]
].
Если метод
[
[yii\web\Response::send()
]
] уже был однажды вызван, любой последующий вызов этого метода будет проигнорирован.
Повторный вызов
[
[yii\web\Response::send()
]
] игнорируется. Это означает, что если ответ уже отправлен, то к нему уже
Это означает, что если ответ уже отправлен, вы уже ничего не сможете добавить к нему
.
ничего не добавить
.
Как видно, метод
[
[yii\web\Response::send()
]
] инициирует несколько полезных событий. Реагируя на
Как видно, метод
[
[yii\web\Response::send()
]
] инициирует несколько полезных событий. Реагируя на
эти события,
становится возможным
настраивать или декорировать ответ.
эти события,
можно
настраивать или декорировать ответ.
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment