Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и аналогичные. Эти устройства не используют AJAX-запросы, и этот компонент может указать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует Cake\Core\InstanceConfigTrait , Cake\Log\LogTrait
-
Cake\Controller\Component\RequestHandlerComponent
Ссылка: http://book.cakephp.org/3.0/ru/controllers/components/request-handling.html
Расположение: Controller/Component/RequestHandlerComponent.php
Краткое описание свойств
-
$_defaultConfigprotectedКонфигурация по умолчаниюarray -
$_renderTypeprotectedШаблон для рендеринга заданного типа контента.string -
$enabledpublicОпределяет, будут ли вызываться колбэки для этого компонентаboolean -
$extpublicСодержит расширение файла, проанализированное маршрутизаторомstring - Хранит ссылку на Controller::$response
$responsepublic
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор. Парсит принимаемые типы контента клиента с использованием HTTP_ACCEPT
- _setExtension() protected
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у типа с наибольшим весом несколько типов, соответствующих расширениям, порядок указания расширений определяет, какой тип будет установлен.
- accepts() public
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно есть), и на заголовке HTTP_ACCEPT. В отличие от Cake\Network\Request::accepts(), этот метод полностью работает с сопоставленными типами контента.
- addInputType() public
Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
- beforeRedirect() publicОбрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
- beforeRender() public
Проверяет, может ли ответ считаться отличным в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменён, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
- convertXml() public
Вспомогательный метод для парсинга данных xml входных данных, из-за отсутствия анонимных функций, он находится здесь.
- implementedEvents() publicПоддерживаемые события этого компонента.
- initialize() public
Проверяет, был ли запрошен определённый тип контента, и устанавливает RequestHandler::$ext соответствующим образом. Проверяет следующее в указанном порядке: 1. Значение '_ext', проанализированное маршрутизатором. 2. Конкретный AJAX-тип запроса, указанный наличием заголовка. 3. Заголовок Accept. За исключением AJAX-запроса, указанного с помощью второго метода, основанного на заголовке, тип должен быть настроен в
Cake\Routing\Router. - 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\Network\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\Network\Request $request , Cake\Network\Response $response )
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как тип ext/content для ответа. Будет установлен тип с наибольшим весом. Если у типа с наибольшим весом несколько типов, соответствующих расширениям, порядок указания расширений определяет, какой тип будет установлен.
Если html — один из предпочтительных типов, тип контента не будет установлен, это для предотвращения проблем с браузерами, которые предпочитают HTML и ещё несколько типов контента.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
-
Cake\Network\Response$response - Экземпляр ответа.
accepts()source public
accepts( string|array|null $type null )
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно есть), и заголовке HTTP_ACCEPT. В отличие от Cake\Network\Request::accepts(), этот метод полностью обрабатывает сопоставленные типы контента.
Использование:
$this->RequestHandler->accepts(['xml', 'html', 'json']);
Возвращает true, если клиент принимает любой из предоставленных типов.
$this->RequestHandler->accepts('xml'); Возвращает true, если клиент принимает xml.
Параметры
- строка|массив|null
$typeнеобязательно null Может быть null (или без параметра), строкой с именем типа или массивом типов.
Возвращает
смешанный типЕсли передано null или нет параметра, возвращается массив типов контента, которые принимает клиент. Если передана строка, возвращается true, если клиент принимает её. Если передан массив, возвращается true, если клиент принимает один или несколько элементов в массиве.
addInputType()source public
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
Устарело
3.1.0 Используйте config('addInputType', ...) вместо этого.Параметры
- строка
$type - Псевдоним типа, который преобразуется, например, json
- массив
$handler Массив обработчика для типа. Первый индекс должен быть обратным вызовом обработки, все другие аргументы — дополнительные параметры для обработчика.
Исключения
Cake\Core\Exception\ExceptionbeforeRedirect()source public
beforeRedirect( Cake\Event\Event $event , string|array $url , Cake\Network\Response $response )
Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRedirect.
- строка|массив
$url - Строка или массив, содержащий местоположение перенаправления
-
Cake\Network\Response$response - Объект ответа.
Возвращает
Cake\Network\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\Network\Response. Если вам нужно объявить дополнительные типы MIME, вы можете сделать это с помощью Cake\Network\Response::type() в методе beforeFilter() вашего контроллера. - Если существует помощник с тем же именем, что и расширение, он добавляется в контроллер.
- Если расширение относится к типу, понимаемому RequestHandler, оно задаст этот тип Content-type в заголовке ответа.
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRender.
Возвращает
booleanfalse, если процесс рендеринга должен быть прерван
convertXml()source public
convertXml( string $xml )
Вспомогательный метод для парсинга входных данных xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - Строка XML.
Возвращает
массивДанные массива XML
implementedEvents()source public
implementedEvents( )
Поддерживаемые события этого компонента.
Возвращает
массивПереопределяет
Cake\Controller\Component::implementedEvents() initialize()source public
initialize( array $config )
Проверяет, был ли запрошен конкретный тип контента, и устанавливает RequestHandler::$ext соответственно. Проверяет следующее в указанном порядке: 1. Значение '_ext', проанализированное маршрутизатором. 2. Конкретный запрос AJAX, указанный наличием заголовка. 3. Заголовок Accept. За исключением AJAX-запроса, указанного вторым способом выше, тип должен быть настроен в Cake\Routing\Router.
Параметры
- массив
$config - Данные конфигурации.
См. также
\Cake\Routing\Router::extensions()Переопределяет
Cake\Controller\Component::initialize() isAtom()source public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isMobile()source public
isMobile( )
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Возвращает
booleanTrue, если пользовательский агент — мобильный веб-браузер
isRss()source public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isXml()source public
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Возвращает
booleanTrue, если клиент принимает XML-ответ
mapAlias()source public
mapAlias( string|array $alias )
Преобразует псевдоним типа контента в его тип MIME.
Параметры
- строка|массив
$alias - Строковый псевдоним, подлежащий преобразованию в тип контента. Или массив псевдонимов, подлежащих сопоставлению.
Возвращает
строка|null|массивNull для неопределённого псевдонима. Строковое значение сопоставленного типа псевдонима. Если псевдоним сопоставляется с несколькими типами контента, возвращается первый. Если для $alias передан массив, будет возвращён массив сопоставленных типов.
prefers()source public
prefers( string|array|null $type null )
Определяет, какие типы контента предпочитает клиент. Если параметры не заданы, возвращается единственный тип контента, который, скорее всего, предпочитается клиентом. Если $type — массив, возвращается первый элемент массива, который принимает клиент. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором (если оно задано), а во вторую — списком типов контента, указанным в HTTP_ACCEPT.
Параметры
- строка|массив|null
$typeнеобязательно null Необязательный массив «дружественных» имён типов контента, например, «html», «xml», «js» и т. д.
Возвращает
смешанный типЕсли $type равен null или не указан, возвращается первый тип контента из списка на основе предпочтения. Если задан единственный тип, возвращается boolean, если этот тип предпочтительнее. Если задан массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.
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\Network\Response. Также позволяет использовать псевдонимы Content-Type.
Параметры
- строка|массив
$type Дружественное имя типа, например 'html' или 'xml', или полный тип содержимого, например 'application/x-shockwave'.
- массив
$optionsнеобязательно [] Если $type — это дружественное имя типа, которое ассоциируется с более чем одним типом содержимого, $index используется для выбора типа содержимого.
Возвращает
booleanВозвращает 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 Используйте config('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.
Методы, используемые из 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 - Значение для записи.
- boolean|строка
$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']);
Параметры
- строка|массив|null
$keyнеобязательно null - Ключ для получения/установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Выполнять ли рекурсивную склейку или перезапись существующей конфигурации, по умолчанию true.
Возвращает
смешанноеЗначение конфигурации, которое считывается, или сам объект при операциях записи.
Выбрасывает
Cake\Core\Exception\ExceptionПри попытке установить недопустимый ключ.
configShallow()source public
configShallow( string|array $key , mixed|null $value null )
Объединяет предоставленную конфигурацию с существующей. В отличие от config(), которое выполняет рекурсивное объединение для вложенных ключей, этот метод выполняет простое объединение.
Установка определенного значения:
$this->config('key', $value); Установка вложенного значения:
$this->config('some.nested.key', $value); Обновление нескольких настроек конфигурации одновременно:
$this->config(['one' => 'value', 'another' => 'value']);
Параметры
- строка|массив
$key - Ключ для установки или полный массив конфигураций.
- смешанное|null
$valueнеобязательно null - Значение для установки.
Возвращает
$this Объект самого себя.
Методы, используемые из Cake\Log\LogTrait
log()source public
log( mixed $msg , integer|string $level LogLevel::ERROR , string|array $context [] )
Удобный метод для записи сообщения в журнал. Для получения дополнительной информации о записи в журнал см. Log::write().
Параметры
- смешанный
$msg - Сообщение журнала.
- целое число или строка
$levelнеобязательно LogLevel::ERROR - Уровень ошибки.
- строка или массив
$contextнеобязательно [] - Дополнительные данные журнала, относящиеся к этому сообщению.
Возвращаемые значения
booleanУспешность записи в журнал.
Подробное описание свойств
$_defaultConfigsource
protected массив
Настройка по умолчанию
Эти настройки объединяются с настройками, предоставленными пользователем, при использовании компонента.
-
checkHttpCache- Нужно ли проверять кэш HTTP. -
viewClassMap- Сопоставление между типом и классами представлений. Если не определено, json, xml и ajax будут сопоставлены. Определение любых типов приведет к пропусканию значений по умолчанию. -
inputTypeMap- Сопоставление между типами и десериализаторами для тел запросов. Если не определено, json и xml будут сопоставлены. Определение любых типов приведет к пропусканию значений по умолчанию.
[
'checkHttpCache' => true,
'viewClassMap' => [],
'inputTypeMap' => []
] $_renderTypesource
protected строка
Шаблон, используемый при рендеринге заданного типа контента.
null
$extsource
public строка
Содержит расширение файла, разобранное маршрутизатором.
См. также
\Cake\Routing\Router::extensions()null
© 2005–2016 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.
http://api.cakephp.org/3.2/class-Cake.Controller.Component.RequestHandlerComponent.html