Класс yii\filters\ContentNegotiator
| Наследование | yii\filters\ContentNegotiator » yii\base\ActionFilter » yii\base\Behavior » yii\base\Object |
|---|---|
| Реализует | yii\base\BootstrapInterface, yii\base\Configurable |
| Доступно с версии | 2.0 |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/framework/filters/ContentNegotiator.php |
ContentNegotiator поддерживает переговорный формат ответа и языка приложения.
Когда свойство поддерживаемых форматов указано, ContentNegotiator будет поддерживать переговорный формат ответа, основываясь на значении параметра GET $formatParam и HTTP-заголовке Accept. Если совпадение найдено, свойство yii\web\Response::$format будет установлено в качестве выбранного формата. Свойства yii\web\Response::$acceptMimeType и yii\web\Response::$acceptParams также будут обновлены соответственно.
Когда свойство поддерживаемых языков указано, ContentNegotiator будет поддерживать переговорный язык приложения, основываясь на значении параметра GET $languageParam и HTTP-заголовке Accept-Language. Если совпадение найдено, свойство yii\base\Application::$language будет установлено в качестве выбранного языка.
Вы можете использовать ContentNegotiator как компонент инициализации, а также как фильтр действия.
Следующий код демонстрирует, как использовать ContentNegotiator как компонент инициализации. Обратите внимание, что в этом случае переговорный формат контента применяется ко всему приложению.
// in application configuration
use yii\web\Response;
return [
'bootstrap' => [
[
'class' => 'yii\filters\ContentNegotiator',
'formats' => [
'application/json' => Response::FORMAT_JSON,
'application/xml' => Response::FORMAT_XML,
],
'languages' => [
'en',
'de',
],
],
],
];
Следующий код демонстрирует, как использовать ContentNegotiator как фильтр действия в контроллере или модуле. В этом случае результат переговорного формата контента применяется только к соответствующему контроллеру или модулю, или даже к определенным действиям, если вы настроите свойство only или except фильтра.
use yii\web\Response;
public function behaviors()
{
return [
[
'class' => 'yii\filters\ContentNegotiator',
'only' => ['view', 'index'], // in a controller
// if in a module, use the following IDs for user actions
// 'only' => ['user/view', 'user/index']
'formats' => [
'application/json' => Response::FORMAT_JSON,
],
'languages' => [
'en',
'de',
],
],
];
}
Публичные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $except | массив | Список идентификаторов действий, к которым данный фильтр не должен применяться. | yii\base\ActionFilter |
| $formatParam | строка | Имя параметра GET, указывающего формат ответа. | yii\filters\ContentNegotiator |
| $formats | массив | Список поддерживаемых форматов ответа. | yii\filters\ContentNegotiator |
| $languageParam | строка | Имя параметра GET, указывающего язык приложения. | yii\filters\ContentNegotiator |
| $languages | массив | Список поддерживаемых языков. | yii\filters\ContentNegotiator |
| $only | массив | Список идентификаторов действий, к которым данный фильтр должен применяться. | yii\base\ActionFilter |
| $owner | yii\base\Component|null | Владелец данного поведения | yii\base\Behavior |
| $request | yii\web\Request | Текущий запрос. | yii\filters\ContentNegotiator |
| $response | yii\web\Response | Отправляемый ответ. | yii\filters\ContentNegotiator |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает метод, который не является методом класса. | yii\base\Object |
| __construct() | Конструктор. | yii\base\Object |
| __get() | Возвращает значение свойства объекта. | yii\base\Object |
| __isset() | Проверяет, установлено ли свойство, т.е. определено и не равно null. | yii\base\Object |
| __set() | Устанавливает значение свойства объекта. | yii\base\Object |
| __unset() | Устанавливает свойство объекта в null. | yii\base\Object |
| afterAction() | Этот метод вызывается сразу после выполнения действия. | yii\base\ActionFilter |
| afterFilter() | yii\base\ActionFilter | |
| attach() | Прикрепляет объект поведения к компоненту. | yii\base\Behavior |
| beforeAction() | Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку действия в последний момент. | yii\filters\ContentNegotiator |
| beforeFilter() | yii\base\ActionFilter | |
| bootstrap() | Метод инициализации, вызываемый во время этапа инициализации приложения. | yii\filters\ContentNegotiator |
| canGetProperty() | Возвращает значение, указывающее, можно ли прочитать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| detach() | Открепляет объект поведения от компонента. | yii\base\Behavior |
| events() | Объявляет обработчики событий для событий $owner. | yii\base\Behavior |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует объект. | yii\base\Object |
| negotiate() | Переговоры о формате ответа и языке приложения. | yii\filters\ContentNegotiator |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| getActionId() | Возвращает идентификатор действия, преобразуя yii\base\Action::$uniqueId в идентификатор, относящийся к модулю | yii\base\ActionFilter |
| isActive() | Возвращает значение, указывающее, активен ли фильтр для данного действия. | yii\base\ActionFilter |
| isLanguageSupported() | Возвращает значение, указывающее, соответствует ли запрашиваемый язык поддерживаемым. | yii\filters\ContentNegotiator |
| negotiateContentType() | Переговоры о формате ответа. | yii\filters\ContentNegotiator |
| negotiateLanguage() | Переговоры о языке приложения. | yii\filters\ContentNegotiator |
Подробное описание свойств
$formatParam общедоступное свойство
Имя параметра GET, указывающего формат ответа. Обратите внимание, что если указанный формат не существует в $formats, будет выброшено исключение yii\web\UnsupportedMediaTypeHttpException. Если значение параметра пустое или это свойство равно null, формат ответа будет определяться только на основе заголовка Accept HTTP.
См. также $formats.
public string $formatParam = '_format'
$formats общедоступное свойство
Список поддерживаемых форматов ответа. Ключи — MIME-типы (например, application/json), а значения — соответствующие форматы (например, html, json), которые должны поддерживаться, как объявлено в yii\web\Response::$formatters.
Если это свойство пустое или не задано, переговоры о формате ответа будут пропущены.
public array $formats = null
$languageParam общедоступное свойство
Имя параметра GET, указывающего язык приложения. Обратите внимание, что если указанный язык не соответствует ни одному из $languages, будет использован первый язык из $languages. Если значение параметра пустое или это свойство равно null, язык приложения будет определяться только на основе заголовка Accept-Language HTTP.
См. также $languages.
public string $languageParam = '_lang'
$languages общедоступное свойство
Список поддерживаемых языков. Ключи массива — поддерживаемые варианты языков (например, en-GB, en-US), а значения — соответствующие коды языков (например, en, de), распознаваемые приложением.
Ключи массива не всегда обязательны. Когда у значения массива нет ключа, сопоставление запрошенного языка будет основано на механизме перехода к резервному языку. Например, значение en будет соответствовать en, en_US, en-US, en-GB, и т.д.
Если это свойство пустое или не задано, переговоры о языке будут пропущены.
public array $languages = null
$request общедоступное свойство
Текущий запрос. Если не задано, будет использован компонент приложения request.
public yii\web\Request $request = null
$response общедоступное свойство
Ответ, который будет отправлен. Если не задано, будет использован компонент приложения response.
public yii\web\Response $response = null
Подробное описание методов
beforeAction() общедоступный метод
Этот метод вызывается непосредственно перед выполнением действия (после всех возможных фильтров). Вы можете переопределить этот метод, чтобы выполнить подготовку к действию в последнюю минуту.
| public boolean beforeAction ( $action ) | ||
|---|---|---|
| $action | yii\base\Action |
Действие, которое будет выполнено. |
| return | boolean |
Продолжить ли выполнение действия. |
bootstrap() общедоступный метод
Метод начальной загрузки, вызываемый во время начального этапа загрузки приложения.
| public void bootstrap ( $app ) | ||
|---|---|---|
| $app | yii\base\Application |
Текущее приложение |
isLanguageSupported() защищённый метод
Возвращает значение, указывающее, соответствует ли запрашиваемый язык поддерживаемому.
| protected boolean isLanguageSupported ( $requested, $supported ) | ||
|---|---|---|
| $requested | string |
Код запрашиваемого языка |
| $supported | string |
Код поддерживаемого языка |
| return | boolean |
Поддерживается ли запрашиваемый язык |
negotiate() общедоступный метод
Переговоры о формате ответа и языке приложения.
| public void negotiate ( ) |
|---|
negotiateContentType() защищённый метод
Переговоры о формате ответа.
| protected void negotiateContentType ( $request, $response ) | ||
|---|---|---|
| $request | yii\web\Request | |
| $response | yii\web\Response | |
| throws | yii\base\InvalidConfigException |
если $formats пустой |
| throws | yii\web\UnsupportedMediaTypeHttpException |
если ни один из запрошенных типов содержимого не принимается. |
negotiateLanguage() защищённый метод
Переговоры о языке приложения.
| protected string negotiateLanguage ( $request ) | ||
|---|---|---|
| $request | yii\web\Request | |
| return | string |
Выбранный язык |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-filters-contentnegotiator.html