Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и т.п. Эти устройства не нуждаются в запросах AJAX, и этот компонент может указать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses 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 -
$ajaxLayoutpublicУстанавливает макет для использования при рендеринге элемента ajaxLogin компонента AuthComponent.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/типа содержимого для ответа. Будет установлен тип с наибольшим весом. Если тип с наибольшим весом соответствует более чем одному типу расширения, порядок указания расширений определяет, какой тип будет установлен.
Если 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()
Устарело
3.3.5 Эта функциональность будет удалена в версии 4.0.0. Вы можете сейчас отключить эту функцию, установив параметр конфигурации enableBeforeRedirect в значение false.
Параметры
-
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, он установит этот тип содержимого в заголовке ответа.
Параметры
-
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, если 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
Параметры
- строка|массив
$alias - Строковый псевдоним для преобразования в тип содержимого. Или массив псевдонимов для сопоставления.
Возвращаемое значение
строка|null|массивNull для неопределенного псевдонима. Строковое значение сопоставленного типа псевдонима. Если псевдоним сопоставляется с несколькими типами содержимого, будет возвращен первый тип. Если для $alias передан массив, будет возвращен массив сопоставленных типов.
prefers()source public
prefers( string|array|null $type null )
Определяет, какие типы контента предпочитает клиент. Если параметры не заданы, возвращается единственный тип контента, который клиент, скорее всего, предпочитает. Если $type является массивом, возвращается первый элемент массива, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором, если оно предоставлено, а во вторую очередь — списком типов контента, предоставленных в HTTP_ACCEPT.
Параметры
- строка|массив|null
$typeнеобязательный null Необязательный массив «дружественных» имен типов контента, например, «html», «xml», «js» и т. д.
Возвращаемое значение
mixedЕсли $type равен null или не задан, возвращается первый тип контента в списке на основе предпочтений. Если задан единственный тип, возвращается логическое значение, если этот тип предпочтительнее. Если задан массив типов, возвращается первый предпочтительный тип. Если тип не задан, возвращается первый предпочтительный тип.
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 (или без параметра), строковым именем типа или массивом типов
Возвращаемое значение
mixedЕсли задан единственный тип, возвращается логическое значение. Если тип не задан, возвращается сопоставленное значение CONTENT_TYPE. Если задан массив, возвращается первый тип в типе контента запроса.
respondAs()source public
respondAs( string|array $type , array $options [] )
Устанавливает заголовок ответа на основе имени индекса карты типов. Это оборачивает несколько методов, доступных в Cake\Network\Response. Также позволяет использовать псевдонимы типов контента.
Параметры
- строка|массив
$type Дружественное имя типа, например, «html» или «xml», или полный тип контента, например, «application/x-shockwave».
- массив
$optionsнеобязательный [] Если $type — это дружественное имя типа, которое ассоциируется с более чем одним типом контента, $index используется для выбора типа контента.
Возвращаемое значение
booleanВозвращает false, если дружественное имя типа, заданное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
responseType()source public
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если такой псевдоним не существует.
Возвращаемое значение
mixedПсевдоним типа контента, или исходный тип контента, если нет карты псевдонимов, в противном случае 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 будут сопоставлены. Определение любых типов исключит значения по умолчанию. -
enableBeforeRedirect- Установите в false, чтобы отключить обратный вызовbeforeRedirect. ФункциональностьbeforeRedirectустарела.
[
'checkHttpCache' => true,
'viewClassMap' => [],
'inputTypeMap' => [],
'enableBeforeRedirect' => true
] $_renderTypesource
protected строка
Шаблон для использования при отрисовке заданного типа контента.
null
$ajaxLayoutsource
public строка
Установите макет для использования при отрисовке элемента ajaxLogin компонента AuthComponent.
Устарело
3.3.11 Это свойство больше не поддерживается и будет удалено в 4.0.0
$enabledsource
public boolean
Определяет, будут ли вызываться обратные вызовы для этого компонента
true
$extsource
public строка
Содержит расширение файла, разобранное маршрутизатором
См. также
\Cake\Routing\Router::extensions()null
© 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.3/class-Cake.Controller.Component.RequestHandlerComponent.html