Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и т. п. Эти устройства не используют AJAX-запросы, и этот компонент может указывать Cake, как реагировать на разные потребности карманного компьютера и настольного компьютера.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\RequestHandlerComponent
Ссылка: https://book.cakephp.org/3.0/ru/controllers/components/request-handling.html
Расположение: Controller/Component/RequestHandlerComponent.php
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_renderTypeprotectedШаблон для рендеринга заданного типа контента.string|null -
$ajaxLayoutpublicУстанавливает макет, используемый при рендеринге элемента ajaxLogin компонента AuthComponent.string -
$enabledpublicboolean -
$extpublicСодержит расширение файла, проанализированное маршрутизаторомstring|null
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор. Парсит принятые типы контента, принятые клиентом, используя HTTP_ACCEPT
- _setExtension() protected
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если существует один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у наибольшего веса есть более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
- accepts() public
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно есть), и на заголовке HTTP_ACCEPT. В отличие от Cake\Http\ServerRequest::accepts() этот метод полностью работает с сопоставленными типами контента.
- addInputType() public
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
- beforeRedirect() publicОбрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
- beforeRender() public
Проверяет, может ли ответ считаться другим в соответствии с заголовками запроса и заголовками ответа кеширования. Если он не был изменён, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
- convertXml() public
Вспомогательный метод для парсинга входных данных xml из-за отсутствия анонимных функций он находится здесь.
- implementedEvents() publicПоддерживаемые этим компонентом события.
- initialize() public
- isAtom() publicВозвращает true, если текущий вызов принимает ответ Atom, в противном случае false
- isMobile() public
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
- isRss() publicВозвращает true, если текущий вызов принимает ответ RSS, в противном случае false
- isWap() publicВозвращает true, если клиент принимает WAP-контент
- isXml() publicВозвращает true, если текущий вызов принимает XML-ответ, в противном случае false
- mapAlias() publicСопоставляет псевдоним типа контента обратно к его типу mime
- prefers() public
Определяет, какие типы контента предпочитает клиент. Если не заданы параметры, возвращается единственный тип контента, который клиент предпочтительнее всего. Если $type является массивом, возвращается первый элемент массива, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором, если оно указано, а во вторую очередь — списком типов контента, указанных в HTTP_ACCEPT.
- renderAs() public
Устанавливает либо класс представления, если он существует, либо путь к макету и шаблону представления. Имена этих элементов получены из входного параметра $type.
- requestedWith() publicОпределяет тип контента данных, отправленных клиентом (например, в запросе POST)
- respondAs() public
Устанавливает заголовок ответа на основе имени индекса карты типов. Это оборачивает несколько методов, доступных в Cake\Http\Response. Также позволяет использовать псевдонимы Content-Type.
- responseType() publicВозвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
- startup() public
Метод startup компонента RequestHandler включает в себя несколько автоматических действий, связанных с обнаружением определённых свойств HTTP-запроса, включая:
- viewClassMap() publicМетод доступа/установки для viewClassMap
Подробное описание методов
__construct()source public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор. Парсит принятые типы контента, принятые клиентом, используя HTTP_ACCEPT
Параметры
-
Cake\Controller\ComponentRegistry$registry - Объект ComponentRegistry.
- массив
$configнеобязательно [] - Массив конфигурации.
Переопределяет
Cake\Controller\Component::__construct() _setExtension()source protected
_setExtension( Cake\Http\ServerRequest $request , Cake\Http\Response $response )
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если существует один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у наибольшего веса есть более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если html — один из предпочитаемых типов, тип контента не будет установлен, это сделано для предотвращения проблем с браузерами, которые предпочитают HTML и несколько других типов контента.
Параметры
-
Cake\Http\ServerRequest$request - Экземпляр запроса.
-
Cake\Http\Response$response - Экземпляр ответа.
accepts()source public
accepts( string|array|null $type null )
Определяет типы содержимого, которые принимает клиент. Принятие основано на расширении файла, анализируемом маршрутизатором (если оно присутствует), и на заголовке HTTP_ACCEPT. В отличие от Cake\Http\ServerRequest::accepts(), этот метод полностью работает с отображаемыми типами содержимого.
Использование:
$this->RequestHandler->accepts(['xml', 'html', 'json']);
Возвращает true, если клиент принимает любой из перечисленных типов.
$this->RequestHandler->accepts('xml'); Возвращает true, если клиент принимает xml.
Параметры
- string|array|null
$typeнеобязательно null Может быть null (или без параметра), строковым именем типа или массивом типов.
Возвращает
mixedЕсли передан null или отсутствует параметр, возвращает массив типов содержимого, которые принимает клиент. Если передана строка, возвращает true, если клиент её принимает. Если передан массив, возвращает true, если клиент принимает один или несколько элементов в массиве.
addInputType()source public
addInputType( string $type , array $handler )
Добавляет новый отображаемый тип ввода. Отображаемые типы ввода автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
Устарело
3.1.0 Используйте setConfig('addInputType', ...) вместо этого.Параметры
- string
$type - Псевдоним типа, преобразуемого, например, json
- array
$handler Массив обработчиков для типа. Первый индекс должен быть обратным вызовом обработки, все остальные аргументы должны быть дополнительными параметрами для обработчика.
Выбрасывает
Cake\Core\Exception\ExceptionbeforeRedirect()source public
beforeRedirect( Cake\Event\Event $event , string|array $url , Cake\Http\Response $response )
Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
Устарело
3.3.5 Эта функциональность будет удалена в версии 4.0.0. Вы можете отключить эту функцию сейчас, установив параметр конфигурации enableBeforeRedirect в значение false.
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRedirect.
- string|array
$url - Строка или массив, содержащие адрес перенаправления
-
Cake\Http\Response$response - Объект ответа.
Возвращает
Cake\Http\Response|nullОбъект ответа, если перенаправление было поймано.
beforeRender()source public
beforeRender( Cake\Event\Event $event )
Проверяет, может ли ответ считаться другим в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменён, то процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
- Если Router::extensions() включён, тип макета и шаблона изменяются в зависимости от обработанного расширения или заголовка
Accept. Например, если запрошенcontroller/action.xml, путь к представлению становитсяapp/View/Controller/xml/action.ctp. Также, если запрошенcontroller/actionсAccept: application/xmlв заголовках, путь к представлению станетapp/View/Controller/xml/action.ctp. Типы макетов и шаблонов будут переключаться только на типы MIME, распознаваемые Cake\Http\Response. Если вам нужно объявить дополнительные типы MIME, вы можете сделать это, используя Cake\Http\Response::type() в методе beforeFilter() вашего контроллера. - Если существует помощник с таким же именем, что и расширение, он добавляется к контроллеру.
- Если расширение относится к типу, который RequestHandler понимает, он установит этот тип Content-type в заголовке ответа.
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRender.
Возвращает
booleanfalse, если процесс рендеринга должен быть прерван
convertXml()source public
convertXml( string $xml )
Вспомогательный метод для анализа данных XML ввода, из-за отсутствия анонимных функций он находится здесь.
Параметры
- string
$xml - Строка XML.
Возвращает
arrayДанные массива XML
implementedEvents()source public
implementedEvents( )
Поддерживаемые этим компонентом события.
Возвращает
arrayПереопределяет
Cake\Controller\Component::implementedEvents() initialize()source public
initialize( array $config )
Устарело
3.4.0 Не используется. Будет удалено в версии 4.0.0Параметры
- array
$config - Данные конфигурации.
Переопределяет
Cake\Controller\Component::initialize() isAtom()source public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isMobile()source public
isMobile( )
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает содержимое WAP.
Возвращает
booleanTrue, если user agent — мобильный веб-браузер
isRss()source public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isWap()source public
isWap( )
Возвращает true, если клиент принимает содержимое WAP
Возвращает
booleanisXml()source public
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Возвращает
booleanTrue, если клиент принимает XML-ответ
mapAlias()source public
mapAlias( string|array $alias )
Преобразует псевдоним типа содержимого обратно в его тип MIME.
Параметры
- string|array
$alias - Строковый псевдоним для преобразования обратно в тип содержимого. Или массив псевдонимов для отображения.
Возвращает
string|null|arrayNull при неопределённом псевдониме. Строковое значение отображённого типа псевдонима. Если псевдоним отображается более чем на один тип содержимого, будет возвращён первый из них. Если для $alias передан массив, будет возвращён массив отображённых типов.
prefers()source public
prefers( string|array|null $type null )
Определяет, какие типы содержимого предпочитает клиент. Если параметры не указаны, возвращается единственный тип содержимого, который клиент, скорее всего, предпочитает. Если $type — массив, возвращается первый элемент массива, который клиент принимает. Предпочтение определяется в первую очередь обработанным расширением файла, предоставленным маршрутизатором, если оно доступно, а во вторую очередь — списком типов содержимого, предоставленным в HTTP_ACCEPT.
Параметры
- string|array|null
$typeнеобязательно null Необязательный массив «дружественных» имён типов содержимого, например, «html», «xml», «js» и т. д.
Возвращает
mixedЕсли $type равен null или не указан, возвращается первый тип содержимого в списке на основе предпочтений. Если предоставлен один тип, возвращается значение true, если этот тип предпочтительнее. Если предоставлен массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.
renderAs()source public
renderAs( Cake\Controller\Controller $controller , string $type , array $options [] )
Устанавливает класс представления, если он существует, или путь к макету и шаблону представления. Названия этих элементов взяты из входного параметра $type.
Использование:
Отображение ответа как ответа 'ajax'.
$this->RequestHandler->renderAs($this, 'ajax');
Отображение ответа как XML-файла и принудительное скачивание результата.
$this->RequestHandler->renderAs($this, 'xml', ['attachment' => 'myfile.xml'];
Параметры
-
Cake\Controller\Controller$controller - Ссылка на объект контроллера
- строка
$type - Тип ответа (например: 'ajax')
- массив
$optionsнеобязательно [] - Массив опций
См. также
\Cake\Controller\Component\RequestHandlerComponent::respondAs()requestedWith()source public
requestedWith( string|array|null $type null )
Определяет тип содержимого данных, отправленных клиентом (например, в запросе POST).
Параметры
- строка|массив|null
$typeнеобязательно null - Может быть null (или без параметра), строковое имя типа или массив типов
Возвращает
смешанныйЕсли предоставлен один тип, будет возвращено значение boolean. Если тип не указан, будет возвращено сопоставленное значение CONTENT_TYPE. Если предоставлен массив, будет возвращен первый тип в типе содержимого запроса.
respondAs()source public
respondAs( string|array $type , array $options [] )
Устанавливает заголовок ответа на основе имени индекса карты типов. Оборачивает несколько методов, доступных в Cake\Http\Response. Также позволяет использовать псевдонимы Content-Type.
Параметры
- строка|массив
$type Дружественное имя типа, например, 'html' или 'xml', или полное имя типа содержимого, например, 'application/x-shockwave'.
- массив
$optionsнеобязательно [] Если $type — дружественное имя типа, связанное с более чем одним типом содержимого, $index используется для выбора типа содержимого.
Возвращает
логическоеВозвращает false, если дружественное имя типа, заданное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
responseType()source public
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует.
Возвращает
смешанныйПсевдоним типа содержимого, или тип содержимого в сыром виде, если карта псевдонимов отсутствует, в противном случае null
startup()source public
startup( Cake\Event\Event $event )
Метод startup компонента RequestHandler позволяет включить несколько автоматических действий, связанных с определением свойств HTTP-запроса, включая:
Если XML-данные отправлены методом POST, данные анализируются в XML-объект, который назначается свойству $data контроллера, которое затем можно сохранить в объекте модели.
Параметры
-
Cake\Event\Event$event - Событие запуска, которое было вызвано.
viewClassMap()source public
viewClassMap( array|string|null $type null , array|null $viewClass null )
Получение/установка viewClassMap
Устарело
3.1.0 Используйте setConfig('viewClassMap', ...) вместо этого.Параметры
- массив|строка|null
$typeнеобязательно null - Строка типа или массив с форматом
['type' => 'viewClass']для сопоставления одного или нескольких - массив|null
$viewClassнеобязательно null - Класс представления, который будет использоваться для типа без
View
Возвращает
массив|строкаВозвращает viewClass, когда задана только строка $type, иначе массив с viewClassMap
Наследуемые методы из Cake\Controller\Component
__debugInfo()source public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
массив__get()source public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
смешанныйОбъект компонента или null.
getController()source public
getController( )
Получение контроллера, к которому привязан компонент.
Возвращает
Cake\Controller\ControllerПривязанный контроллер.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- строка
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionесли пытаетесь переписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Чтение ключа конфигурации.
Параметры
- строка|null
$key - Ключ для чтения.
Возвращает
смешанный_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись ключа конфигурации.
Параметры
- строка|массив
$key - Ключ для записи.
- смешанный
$value - Значение для записи.
- логическое|строка
$mergeнеобязательно false True — для рекурсивного слияния, 'shallow' — для простого слияния, false — для перезаписи, по умолчанию false.
Исключения
Cake\Core\Exception\Exceptionесли пытаетесь переписать существующую конфигурацию
config()source public
config( string|array|null $key null , mixed|null $value null , boolean $merge true )
Получение/установка конфигурации.
Использование
Чтение всей конфигурации:
$this->config();
Чтение определенного значения:
$this->config('key'); Чтение вложенного значения:
$this->config('some.nested.key'); Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Устарело
3.4.0 используйте setConfig()/getConfig() вместо этого.Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанный|null
$valueнеобязательно null - Значение для установки.
- логическое
$mergeнеобязательно true - Выполнять рекурсивное слияние или перезапись существующей конфигурации, по умолчанию true.
Возвращает
смешанныйЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить некорректный ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Объединить предоставленную конфигурацию с существующей конфигурацией. В отличие от config(), которая выполняет рекурсивное слияние для вложенных ключей, этот метод выполняет простое слияние.
Установка определенного значения:
$this->configShallow('key', $value); Установка вложенного значения:
$this->configShallow('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->configShallow(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанный|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this
getConfig()source public
getConfig( string|null $key null , mixed $default null )
Возвращает конфигурацию.
Использование
Чтение всей конфигурации:
$this->getConfig();
Чтение определенного значения:
$this->getConfig('key'); Чтение вложенного значения:
$this->getConfig('some.nested.key'); Чтение со значением по умолчанию:
$this->getConfig('some-key', 'default-value'); Параметры
- string|null
$keyнеобязательный null - Ключ для получения значения, или null для всей конфигурации.
- mixed
$defaultнеобязательный null - Возвращаемое значение, если ключ не существует.
Возвращает
mixedЗначение конфигурации.
setConfig()source public
setConfig( string|array $key , mixed|null $value null , boolean $merge true )
Устанавливает конфигурацию.
Использование
Установка определенного значения:
$this->setConfig('key', $value); Установка вложенного значения:
$this->setConfig('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->setConfig(['one' => 'value', 'another' => 'value']);
Параметры
- string|array
$key - Ключ для установки, или массив настроек.
- mixed|null
$valueнеобязательный null - Значение для установки.
- boolean
$mergeнеобязательный true - Включить рекурсивное слияние или перезапись существующих настроек, по умолчанию true.
Возвращает
$this
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Метод для записи сообщения в журнал. См. Log::write() для получения дополнительной информации о записи в журналы.
Параметры
- mixed
$msg - Сообщение для записи в журнал.
- integer|string
$levelнеобязательный LogLevel::ERROR - Уровень ошибки.
- string|array
$contextнеобязательный [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращает
booleanРезультат записи в журнал.
Подробное описание свойств
$_defaultConfigsource
protected array
Конфигурация по умолчанию
Эти значения объединяются с предоставленными пользователем конфигурационными настройками, когда компонент используется.
-
checkHttpCache- Проверка кэша HTTP. -
viewClassMap- Сопоставление типа с классами представления. Если не определено, будут сопоставлены json, xml и ajax. Определение типов приведет к исключению значений по умолчанию. -
inputTypeMap- Сопоставление типов и десериализаторов для тел запроса. Если не определено, будут сопоставлены json и xml. Определение типов приведет к исключению значений по умолчанию. -
enableBeforeRedirect- Установите значение в false, чтобы отключить обратный вызовbeforeRedirect. ФункциональностьbeforeRedirectустарела.
[
'checkHttpCache' => true,
'viewClassMap' => [],
'inputTypeMap' => [],
'enableBeforeRedirect' => true
] $_renderTypesource
protected string|null
Шаблон для использования при рендеринге данного типа контента.
$ajaxLayoutsource
public string
Установите шаблон, который будет использоваться при рендеринге элемента ajaxLogin компонента AuthComponent.
Устарело
3.3.11 Это свойство не поддерживается и будет удалено в версии 4.0.0
$extsource
public string|null
Содержит расширение файла, полученное из маршрутизатора.
См. также
\Cake\Routing\Router::extensions()
© 2005–2017 The Cake Software Foundation, Inc.
Licensed under the MIT License.
CakePHP is a registered trademark of Cake Software Foundation, Inc.
We are not endorsed by or affiliated with CakePHP.
https://api.cakephp.org/3.4/class-Cake.Controller.Component.RequestHandlerComponent.html