Класс 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 компонента 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Поддерживаемые события этого компонента.
- Возвращает 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.
- Возвращает текущий тип ответа (заголовок 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 устаревший
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются компонентом RequestHandler во время обратного вызова startup().
Устаревший
3.1.0 Используйте setConfig('addInputType', ...) вместо этого.Параметры
- строка
$type - Псевдоним типа, который преобразуется, например, json
- массив
$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.
- строка|массив
$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, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - Строка xml.
Возвращает
массивДанные массива xml
implementedEvents()source public
implementedEvents( )
События, поддерживаемые этим компонентом.
Возвращает
массивПереопределяет
Cake\Controller\Component::implementedEvents() initialize()source public устаревший
initialize( array $config )
Устаревший
3.4.0 Не используется. Будет удален в версии 4.0.0Параметры
- массив
$config - Данные конфигурации.
Переопределяет
Cake\Controller\Component::initialize() isAtom()source public устаревший
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае — false
Устаревший
3.7.0 Используйте RequestHandler::prefers('atom') вместо этого.Возвращает
booleanTrue, если клиент принимает ответ Atom
isMobile()source public устаревший
isMobile( )
Возвращает true, если строка пользовательского агента соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Устаревший
3.7.0 Используйте ServerRequest::is('mobile') вместо этого.Возвращает
booleanTrue, если пользовательский агент — мобильный веб-браузер
isRss()source public устаревший
isRss( )
Возвращает true, если текущий вызов принимает RSS-ответ, в противном случае — false
Устаревший
3.7.0 Используйте RequestHandler::prefers('rss') вместо этого.Возвращает
booleanTrue, если клиент принимает RSS-ответ
isWap()source public устаревший
isWap( )
Возвращает true, если клиент принимает WAP-контент
Устаревший
3.7.0 Используйте RequestHandler::prefers('wap') вместо этого.Возвращает
booleanisXml()source public устаревший
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Устаревший
3.7.0 Используйте RequestHandler::prefers('xml') вместо этого.Возвращает
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 или не указан, возвращается первый тип контента в списке, основанный на предпочтениях. Если указан единственный тип, возвращается логическое значение, указывающее, предпочитается ли этот тип. Если указан массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.
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 (или без параметра), строковым именем типа или массивом типов
Возвращает
смешанный типЕсли указан единственный тип, возвращается логическое значение. Если тип не указан, возвращается сопоставленное значение CONTENT_TYPE. Если указан массив, возвращается первый тип контента запроса.
respondAs()source public
respondAs( string|array $type , array $options = [] )
Устанавливает заголовок ответа на основе имени индекса карты типов. Эта функция оборачивает несколько методов, доступных в Cake\Http\Response. Она также позволяет использовать псевдонимы типов контента.
Параметры
- строка|массив
$type Дружественное имя типа, например, 'html' или 'xml', или полный тип контента, например, 'application/x-shockwave'.
- массив
$optionsнеобязательно [] Если $type — это дружественное имя типа, которое ассоциируется с более чем одним типом контента, $index используется для выбора типа контента для использования.
Возвращает
булевоВозвращает false, если дружественное имя типа, указанное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
responseType()source public устарело
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 - Событие startup, которое было запущено.
viewClassMap()source public устарело
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 - Значение для записи.
- булево|строка
$mergeнеобязательно false True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Исключения
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() вместо этого.Параметры
- 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
Содержит расширение файла, разобранное маршрутизатором.
Устарело начиная с версии 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.7/class-Cake.Controller.Component.RequestHandlerComponent.html