Класс 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/content для ответа. Тип с наивысшим весом будет установлен. Если у наивысшего веса есть более одного типа, соответствующего расширениям, порядок указания расширений определяет, какой тип будет установлен.
- accepts() public
Определяет, какие типы контента принимает клиент. Прием основав на расширении файла, проанализированном маршрутизатором (если оно есть), и заголовке HTTP_ACCEPT. В отличие от Cake\Http\ServerRequest::accepts(), этот метод полностью работает с сопоставленными типами контента.
-
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются RequestHandlerComponent во время обратного вызова startup().
- Обрабатывает (имитирует) перенаправления для AJAX-запросов с использованием requestAction()
- beforeRender() public
Проверяет, может ли ответ считаться разным в соответствии с заголовками запроса и заголовками кеширования ответа. Если он не был изменён, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
- convertXml() public
Вспомогательный метод для анализа входных данных XML, из-за отсутствия анонимных функций он находится здесь.
- implementedEvents() 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
Подробное описание методов
__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.
Параметры
- строка|массив|null
$typeнеобязательно null Может быть null (или без параметра), именем типа строки или массивом типов.
Возвращаемое значение
смешанныйЕсли передан null или нет параметра, возвращается массив типов содержимого, которые принимает клиент. Если передана строка, возвращается true, если клиент её принимает. Если передан массив, возвращается true, если клиент принимает один или несколько элементов из массива.
addInputType()source public deprecated
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
Устарело
3.1.0 Используйте вместо этого setConfig('addInputType', ...).Параметры
- строка
$type - Псевдоним типа, преобразуемого, например, json.
- массив
$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.
- строка|массив
$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.
Возвращаемое значение
логическоеfalse, если процесс рендеринга должен быть прерван
Исключения
Cake\Http\Exception\NotFoundExceptionЕсли вызываемое расширение не настроено.
convertXml()source public
convertXml( string $xml )
Вспомогательный метод для разбора данных входных данных xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - Строка XML.
Возвращаемое значение
массивДанные массива XML
implementedEvents()source public
implementedEvents( )
Поддерживаемые этим компонентом события.
Возвращаемое значение
массивПереопределяет
Cake\Controller\Component::implementedEvents() initialize()source public deprecated
initialize( array $config )
Устарело
3.4.0 Не используется. Будет удалено в версии 4.0.0Параметры
- массив
$config - Данные конфигурации.
Переопределяет
Cake\Controller\Component::initialize() isAtom()source public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false
Возвращаемое значение
логическоеTrue, если клиент принимает ответ RSS
isMobile()source public
isMobile( )
Возвращает true, если строка пользователя соответствует мобильному веб-браузеру или если клиент принимает WAP-содержимое.
Возвращаемое значение
логическоеTrue, если пользовательский агент является мобильным веб-браузером
isRss()source public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false
Возвращаемое значение
логическоеTrue, если клиент принимает ответ RSS
isWap()source public
isWap( )
Возвращает true, если клиент принимает WAP-содержимое
Возвращаемое значение
логическоеisXml()source public
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Возвращаемое значение
логическоеTrue, если клиент принимает 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 или не задан, возвращается первый тип содержимого в списке, основанном на предпочтениях. Если задан единственный тип, возвращается 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Если предоставлен один тип, будет возвращено значение boolean. Если тип не указан, возвращается сопоставленное значение 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 будут сопоставлены. Определение любых типов приведет к исключению значений по умолчанию. -
viewClassMap- Сопоставление типов и десериализаторов для тел запросов. Если не определено, json и xml будут сопоставлены. Определение любых типов приведет к исключению значений по умолчанию. -
enableBeforeRedirect- Установить в false для отключения обратного вызоваbeforeRedirect. ФункциональностьbeforeRedirectустарела.
[
'checkHttpCache' => true,
'viewClassMap' => [],
'inputTypeMap' => [],
'enableBeforeRedirect' => true
] $_renderTypesource
protected string|null
Шаблон для использования при отображении указанного типа контента.
$ajaxLayoutsource
public string
Установите макет для использования при отображении элемента ajaxLogin компонента Auth.
Устарело
3.3.11 Это свойство не поддерживается и будет удалено в версии 4.0.0
$extsource
public string|null
Содержит расширение файла, полученное из Router.
См. также
\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.6/class-Cake.Controller.Component.RequestHandlerComponent.html