Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и т. п. Эти устройства не используют AJAX-запросы, и этот компонент может указывать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.
- Cake\Controller\Component implements Cake\Event\EventListenerInterface uses 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 для ответа. Будет установлен тип с наибольшим весом. Если наибольший вес имеет более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если html является одним из предпочитаемых типов, тип содержимого не будет установлен, это для предотвращения проблем с браузерами, которые предпочитают HTML и несколько других типов содержимого.
- accepts() public
Определяет, какие типы содержимого принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если присутствует), и на заголовке HTTP_ACCEPT. В отличие от Cake\Http\ServerRequest::accepts() этот метод полностью работает с сопоставленными типами содержимого.
- addInputType() public
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются компонентом RequestHandler во время обратного вызова 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, если строка пользовательского агента соответствует мобильному веб-браузеру или если клиент принимает содержимое 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. Оно также позволяет использовать псевдонимы типов содержимого.
- 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.
- array
$configoptional [] - Массив конфигурации.
Переопределяет
Cake\Controller\Component::__construct() _setExtension()source protected
_setExtension( 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, если пользовательский агент — мобильный веб-браузер
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 - Ссылка на объект контроллера
- string
$type - Тип ответа (например: 'ajax')
- array
$optionsнеобязательно [] - Массив опций для использования
См. также
\Cake\Controller\Component\RequestHandlerComponent::respondAs()requestedWith()source public
requestedWith( string|array|null $type null )
Определяет тип содержимого данных, отправленных клиентом (например, в запросе POST).
Параметры
- string|array|null
$typeнеобязательно null - Может быть null (или без параметра), строкой типа, или массивом типов
Возвращает
mixedЕсли предоставлен один тип, будет возвращен булево значение. Если тип не указан, возвращается сопоставленное значение CONTENT_TYPE. Если передан массив, будет возвращен первый тип в типе содержимого запроса.
respondAs()source public
respondAs( string|array $type , array $options [] )
Устанавливает заголовок ответа на основе имени индекса карты типов. Обёртка для нескольких методов, доступных в Cake\Http\Response. Также позволяет использовать псевдонимы типов Content-Type.
Параметры
- string|array
$type Дружественное имя типа, например, 'html' или 'xml', или полный тип содержимого, например, 'application/x-shockwave'.
- array
$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 Используйте setConfig('viewClassMap', ...) вместо этого.Параметры
- array|string|null
$typeнеобязательно null - Строка типа или массив с форматом
['type' => 'viewClass']для сопоставления одного или нескольких - array|null
$viewClassнеобязательно null - Класс представления, который будет использоваться для типа без
Viewв конце
Возвращает
array|stringВозвращает viewClass, когда задан только строковый параметр $type, иначе массив с viewClassMap
Методы, унаследованные от Cake\Controller\Component
__debugInfo()source public
__debugInfo( )
Возвращает массив, который может быть использован для описания внутреннего состояния этого объекта.
Возвращает
array__get()source public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращает
mixedОбъект компонента или null.
getController()source public
getController( )
Получить контроллер, к которому привязан этот компонент.
Возвращает
Cake\Controller\ControllerПривязанный контроллер.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDelete()source protected
_configDelete( string $key )
Удаляет один ключ конфигурации.
Параметры
- string
$key - Ключ для удаления.
Исключения
Cake\Core\Exception\Exceptionесли пытаетесь перезаписать существующую конфигурацию
_configRead()source protected
_configRead( string|null $key )
Читает ключ конфигурации.
Параметры
- string|null
$key - Ключ для чтения.
Возвращает
mixed_configWrite()source protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Записывает ключ конфигурации.
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$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() вместо этого.Параметры
- string|array|null
$keyнеобязательно null - Ключ для получения/установки или массив всех параметров конфигурации.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Флаг рекурсивного слияния или перезаписи существующей конфигурации, по умолчанию true.
Возвращает
mixedЗначение параметра конфигурации, которое читается, или сам объект при операциях записи.
Исключения
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']);
Параметры
- string|array
$key - Ключ для установки или полный массив параметров конфигурации.
- mixed|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–2018 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.5/class-Cake.Controller.Component.RequestHandlerComponent.html