Класс 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 компонента Auth.string -
$enabledpublicboolean -
$extpublicСодержит расширение файла, полученное в результате парсинга маршрутизаторомstring|null
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор. Парсит принятые типы контента, полученные клиентом с помощью HTTP_ACCEPT
- _setExtension() protected
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как ext/тип контента для ответа. Тип с наивысшим весом будет установлен. Если у наивысшего веса есть более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
- accepts() public
Определяет типы контента, принимаемые клиентом. Принятие основано на расширении файла, обработанном маршрутизатором (если оно есть), и на заголовке HTTP_ACCEPT. В отличие от Cake\Http\ServerRequest::accepts(), этот метод полностью работает с сопоставленными типами контента.
-
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
- Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
- beforeRender() public
Проверяет, может ли ответ считаться другим в соответствии с заголовками запроса и заголовками ответа кэширования. Если он не был изменён, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
- convertXml() public
Вспомогательный метод для парсинга данных xml ввода, из-за отсутствия анонимных функций он находится здесь.
- implementedEvents() publicПоддерживаемые события этим компонентом.
- Возвращает true, если текущий вызов принимает ответ Atom, в противном случае false
-
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
- Возвращает true, если текущий вызов принимает ответ RSS, в противном случае false
- Возвращает true, если клиент принимает WAP-контент
- Возвращает true, если текущий вызов принимает XML-ответ, в противном случае false
- mapAlias() publicПреобразует псевдоним типа контента в его MIME-тип(ы)
- prefers() public
Определяет, какие типы контента предпочитает клиент. Если параметры не заданы, возвращается единственный тип контента, который клиент, скорее всего, предпочитает. Если $type — массив, возвращается первый элемент в массиве, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, обработанным маршрутизатором, если оно предоставлено, и во вторую очередь списком типов контента, предоставленных в HTTP_ACCEPT.
- renderAs() public
Устанавливает либо класс представления, если он существует, либо путь к макету и шаблону представления. Имена этих элементов получены из входного параметра $type.
- requestedWith() publicОпределяет тип контента данных, отправленных клиентом (например, в запросе POST)
- respondAs() public
Устанавливает заголовок ответа на основе имени индекса карты типов. Это оборачивает несколько методов, доступных в Cake\Http\Response. Также позволяет использовать псевдонимы типов контента.
- Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
- startup() public
Метод startup компонента RequestHandler позволяет реализовать несколько автоматических функций, связанных с определением некоторых свойств HTTP-запроса, включая:
- Геттер/сеттер для 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/тип контента для ответа. Тип с наивысшим весом будет установлен. Если у наивысшего веса есть более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если 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
$typeoptional null Может быть null (или без параметра), строковым именем типа или массивом типов
Возвращает
mixedЕсли передан null или нет параметра, возвращает массив типов контента, которые принимает клиент. Если передана строка, возвращает true, если клиент принимает её. Если передан массив, возвращает true, если клиент принимает один или несколько элементов в массиве.
addInputType()source public deprecated
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются RequestHandlerComponent во время обратного вызова startup().
Устарело
3.1.0 Используйте setConfig('addInputType', ...) вместо этого.Параметры
- string
$type - Псевдоним типа, который преобразуется, например, json
- array
$handler Массив обработчика для типа. Первый индекс должен быть обратным вызовом обработки, все остальные аргументы должны быть дополнительными параметрами для обработчика.
Выбрасывает
Cake\Core\Exception\ExceptionbeforeRedirect()source public deprecated
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, если процесс рендеринга должен быть прерван
Выбрасывает
Cake\Http\Exception\NotFoundExceptionЕсли вызываемое расширение не настроено.
convertXml()source public
convertXml( string $xml )
Вспомогательный метод для разбора входных данных xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- string
$xml - Строка XML.
Возвращает
arrayДанные массива Xml
implementedEvents()source public
implementedEvents( )
События, поддерживаемые этим компонентом.
Возвращает
arrayПереопределяет
Cake\Controller\Component::implementedEvents() initialize()source public deprecated
initialize( array $config )
Устарело
3.4.0 Не используется. Будет удалено в 4.0.0Параметры
- array
$config - Данные конфигурации.
Переопределяет
Cake\Controller\Component::initialize() isAtom()source public deprecated
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false
Устарело
3.7.0 Используйте RequestHandler::prefers('atom') вместо этого.Возвращает
booleanTrue, если клиент принимает ответ Atom
isMobile()source public deprecated
isMobile( )
Возвращает true, если строка пользовательского агента соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Устарело
3.7.0 Используйте ServerRequest::is('mobile') вместо этого.Возвращает
booleanTrue, если пользовательский агент — мобильный веб-браузер
isRss()source public deprecated
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false
Устарело
3.7.0 Используйте RequestHandler::prefers('rss') вместо этого.Возвращает
booleanTrue, если клиент принимает ответ RSS
isWap()source public deprecated
isWap( )
Возвращает true, если клиент принимает WAP-контент
Устарело
3.7.0 Используйте RequestHandler::prefers('wap') вместо этого.Возвращает
booleanisXml()source public deprecated
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Устарело
3.7.0 Используйте RequestHandler::prefers('xml') вместо этого.Возвращает
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
$typeoptional 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 используется для выбора типа содержимого для использования.
Возвращает
booleanВозвращает false, если дружественное имя типа, заданное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
responseType()source public deprecated
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует.
Устаревшее
3.7.0 Используйте $response->mapType($response->getType()) вместо этого.Возвращает
смешанныйПсевдоним типа содержимого, или тип содержимого в сыром виде, если карта псевдонимов не существует, иначе null.
startup()source public
startup( Cake\Event\Event $event )
Метод startup компонента RequestHandler включает несколько автоматических функций, связанных с определением определённых свойств HTTP-запроса, включая:
Если данные XML отправлены методом POST, данные анализируются в объект XML, который назначается свойству $data контроллера, которое затем может быть сохранено в объекте модели.
Параметры
-
Cake\Event\Event$event - Событие запуска, которое было сгенерировано.
viewClassMap()source public deprecated
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 - Значение для записи.
- boolean|строка
$mergeнеобязательно false Истина для рекурсивного слияния, «shallow» для простого слияния, ложь для перезаписи, по умолчанию ложь.
Выбрасывает
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
config()source public deprecated
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 - Значение для установки.
- boolean
$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Данные конфигурации по указанному ключу или null, если ключ не существует.
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, чтобы отключить callbackbeforeRedirect. Функциональность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
Содержит расширение файла, разобранное маршрутизатором
Устарело начиная с 3.7.0. Это свойство будет защищено в 4.0.0.
См. также
\Cake\Routing\Router::extensions()
© 2005–present 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.8/class-Cake.Controller.Component.RequestHandlerComponent.html