Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и тому подобное. Эти устройства не используют AJAX-запросы, и этот компонент может определить, как Cake должен отвечать на различные потребности карманного компьютера и настольного ПК.
- Cake\Controller\Component реализует Cake\Event\EventListenerInterface использует 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
Подробное описание методов
__constructsource public
__construct( Cake\Controller\ComponentRegistry $registry , array $config [] )
Конструктор. Парсит принятые типы контента, принятые клиентом, используя HTTP_ACCEPT
Параметры
-
Cake\Controller\ComponentRegistry$registry - Объект ComponentRegistry.
- массив
$configнеобязательно [] - Массив настроек.
Переопределяет
Cake\Controller\Component::__construct() _setExtensionsource protected
_setExtension( Cake\Network\Request $request , Cake\Network\Response $response )
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если существует один общий тип, он назначается как тип ext/content для ответа. Тип с наивысшим весом будет установлен. Если у типа с наивысшим весом есть более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если html является одним из предпочтительных типов, тип контента не будет установлен, это делается для предотвращения проблем с браузерами, которые предпочитают HTML и несколько других типов контента.
Параметры
-
Cake\Network\Request$request - Экземпляр запроса.
-
Cake\Network\Response$response - Экземпляр ответа.
acceptssource public
accepts( string|array $type null )
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно присутствует), и на заголовке HTTP_ACCEPT. В отличие от Cake\Network\Request::accepts(), этот метод полностью работает с сопоставленными типами контента.
Использование:
$this->RequestHandler->accepts(['xml', 'html', 'json']);
Возвращает true, если клиент принимает любой из указанных типов.
$this->RequestHandler->accepts('xml');
Возвращает true, если клиент принимает xml.
Параметры
- строка|массив
$typeнеобязательно null - Может быть null (или без параметра), строка типа имени или массив типов
Возвращает
mixedЕсли передан null или нет параметров, возвращает массив типов контента, которые принимает клиент. Если передана строка, возвращает true, если клиент её принимает. Если передан массив, возвращает true, если клиент принимает один или несколько элементов массива.
addInputTypesource public
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
Устарело
3.1.0 Используйте config('addInputType', ...) вместо этого.Параметры
- строка
$type - Псевдоним типа, преобразуемого, например, json
- массив
$handler - Массив обработчика для типа. Первый индекс должен быть обратным вызовом обработки, все остальные аргументы должны быть дополнительными параметрами для обработчика.
Выбрасывает
Cake\Core\Exception\Exception\Cake\Core\Exception\Exception
beforeRedirectsource public
beforeRedirect( Cake\Event\Event $event , string|array $url , Cake\Network\Response $response )
Обрабатывает (имитирует) перенаправления для AJAX-запросов с помощью requestAction()
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRedirect.
- строка|массив
$url - Строка или массив, содержащий местоположение перенаправления
-
Cake\Network\Response$response - Объект ответа.
Возвращает
Cake\Network\Response|nullОбъект ответа, если перенаправление было перехвачено.
beforeRendersource public
beforeRender( Cake\Event\Event $event )
Проверяет, можно ли считать ответ другим, в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменён, процесс отрисовки пропускается. И клиент получит пустой ответ с заголовком "304 Not Modified".
- Если Router::extensions() включён, тип макета и шаблона изменяются на основе проанализированного расширения или заголовка Accept-Type. Например, если запрашивается
controller/action.xml, путь к представлению становитсяapp/View/Controller/xml/action.ctp. Также, если запрашиваетсяcontroller/actionсAccept-Type: application/xmlв заголовках, путь к представлению станетapp/View/Controller/xml/action.ctp. Типы макетов и шаблонов будут переключаться только на типы MIME, распознаваемые Cake\Network\Response. Если вам нужно объявить дополнительные типы MIME, вы можете сделать это, используя Cake\Network\Response::type() в методе beforeFilter() вашего контроллера. - Если существует помощник с тем же именем, что и расширение, он добавляется в контроллер.
- Если расширение относится к типу, который понимает RequestHandler, он установит этот тип Content-type в заголовке ответа.
Параметры
-
Cake\Event\Event$event - Событие Controller.beforeRender.
Возвращает
booleanfalse, если процесс отрисовки должен быть прерван
convertXmlsource public
convertXml( string $xml )
Вспомогательный метод для анализа данных ввода xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - Строка XML.
Возвращает
arrayДанные массива xml
implementedEventssource public
implementedEvents( )
События, поддерживаемые этим компонентом.
Возвращает
arrayмассив
Переопределяет
Cake\Controller\Component::implementedEvents() initializesource public
initialize( array $config )
Проверяет, запрошен ли конкретный тип контента, и устанавливает RequestHandler::$ext соответственно. Проверяет следующее в порядке: 1. Значение '_ext', проанализированное маршрутизатором. 2. Конкретный AJAX-запрос, указанный наличием заголовка. 3. Заголовок Accept. За исключением AJAX-запроса, указанного с помощью второго заголовка, тип должен быть настроен в Cake\Routing\Router.
Параметры
- массив
$config - Данные конфигурации.
См. также
Router::extensions()Переопределяет
Cake\Controller\Component::initialize() isAtomsource public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isMobilesource public
isMobile( )
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Возвращает
booleanTrue, если user agent — мобильный веб-браузер
isRsssource public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isWapsource public
isWap( )
Возвращает true, если клиент принимает WAP-контент
Возвращает
booleanbool
isXmlsource public
isXml( )
Возвращает true, если текущий вызов принимает XML-ответ, в противном случае — false
Возвращает
booleanTrue, если клиент принимает XML-ответ
mapAliassource public
mapAlias( string|array $alias )
Преобразует псевдоним типа контента в соответствующий MIME-тип(ы)
Параметры
- string|array
$alias - Псевдоним типа контента для преобразования в MIME-тип. Или массив псевдонимов для преобразования.
Возвращает
string|null|arrayNull, если псевдоним не определен. Строковое значение сопоставленного типа. Если псевдоним соответствует нескольким типам контента, будет возвращен первый из них. Если для $alias передан массив, будет возвращен массив сопоставленных типов.
preferssource public
prefers( string|array $type null )
Определяет, какие типы контента предпочитает клиент. Если нет параметров, возвращается единственный тип контента, который клиент, скорее всего, предпочитает. Если $type — массив, возвращается первый элемент в массиве, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором (если предоставлено), а во вторую — списком типов контента, предоставленным в HTTP_ACCEPT.
Параметры
- string|array
$typeoptional null - Необязательный массив «дружественных» имён типов контента, например, 'html', 'xml', 'js' и т. д.
Возвращает
mixedЕсли $type равен null или не указан, возвращается первый тип контента в списке на основе предпочтения. Если указан один тип, возвращается boolean, указывающий, предпочитается ли этот тип. Если указан массив типов, возвращается первый предпочитаемый тип. Если тип не указан, возвращается первый предпочитаемый тип.
renderAssource 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
$optionsoptional [] - Массив опций
См. также
Cake\Controller\Component\RequestHandlerComponent::respondAs()requestedWithsource public
requestedWith( string|array $type null )
Определяет тип контента данных, отправленных клиентом (например, в запросе POST)
Параметры
- string|array
$typeoptional null - Может быть null (или без параметра), строковым именем типа или массивом типов
Возвращает
mixedЕсли передан один тип, возвращается boolean. Если тип не указан, возвращается сопоставленное значение CONTENT_TYPE. Если передан массив, возвращается первый тип в типе запроса.
respondAssource public
respondAs( string|array $type , array $options [] )
Устанавливает заголовок ответа на основе имени индекса карты типов. Оборачивает несколько методов, доступных в Cake\Network\Response. Также позволяет использовать псевдонимы типов контента.
Параметры
- string|array
$type - Дружественное имя типа, например, 'html' или 'xml', или полный тип контента, например, 'application/x-shockwave'.
- array
$optionsoptional [] - Если $type — дружественное имя типа, которое ассоциируется с несколькими типами контента, $index используется для выбора типа контента.
Возвращает
booleanВозвращает false, если дружественное имя типа, указанное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
responseTypesource public
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
Возвращает
mixedСтроковый псевдоним типа контента или исходный тип контента, если карта псевдонимов не существует, в противном случае null
startupsource public
startup( Cake\Event\Event $event )
Метод startup компонента RequestHandler включает несколько автоматических действий, связанных с определением свойств HTTP-запроса, включая:
Если XML-данные отправляются методом POST, данные анализируются в объект XML, который присваивается свойству $data контроллера, которое затем может быть сохранено в объект модели.
Параметры
-
Cake\Event\Event$event - Событие инициализации, которое было запущено.
viewClassMapsource public
viewClassMap( array|string|null $type null , array|null $viewClass null )
Геттер/сеттер для viewClassMap
Устарело
3.1.0 Используйте config('viewClassMap', ...) вместо этого.Параметры
- array|string|null
$typeoptional null - Строка типа или массив в формате
['type' => 'viewClass']для сопоставления одного или нескольких - array|null
$viewClassoptional null - Класс представления, который будет использоваться для типа без
Viewдобавленного
Возвращает
array|stringВозвращает viewClass, когда задана только строка $type, в противном случае массив с viewClassMap
Методы, унаследованные от Cake\Controller\Component
__debugInfosource public
__debugInfo( )
Возвращает массив, который можно использовать для описания внутреннего состояния этого объекта.
Возвращает
arrayarray
__getsource public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращает
mixedОбъект компонента или null.
Методы, используемые из Cake\Core\InstanceConfigTrait
_configDeletesource protected
_configDelete( string $key )
Удаление одного ключа конфигурации
Параметры
- string
$key - Ключ для удаления.
Выбрасывает
Cake\Core\Exception\Exceptionесли попытка перезаписать существующую конфигурацию
_configReadsource protected
_configRead( string|null $key )
Чтение переменной конфигурации
Параметры
- string|null
$key - Ключ для чтения.
Возвращает
mixedmixed
_configWritesource protected
_configWrite( string|array $key , mixed $value , boolean|string $merge false )
Запись переменной конфигурации
Параметры
- string|array
$key - Ключ для записи.
- mixed
$value - Значение для записи.
- boolean|string
$mergeoptional false - True для рекурсивного слияния, 'shallow' для простого слияния, false для перезаписи, по умолчанию false.
Выбрасывает
Cake\Core\Exception\Exceptionесли попытка перезаписи существующей конфигурации
configsource 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']);
Параметры
- string|array|null
$keyнеобязательно null - Ключ для получения/установки или полный массив настроек.
- mixed|null
$valueнеобязательно null - Значение для установки.
- boolean
$mergeнеобязательно true - Выполнять рекурсивное слияние или перезаписывать существующий конфиг, по умолчанию true.
Возвращает
mixedЗначение конфига, которое читается, или сам объект при операциях записи.
Исключения
Cake\Core\Exception\ExceptionПри попытке установить некорректный ключ.
configShallowsource 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']);
Параметры
- string|array
$key - Ключ для установки или полный массив настроек.
- mixed|null
$valueнеобязательно null - Значение для установки.
Возвращает
mixed$this Сам объект.
Методы, используемые из Cake\Log\LogTrait
logsource 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Результат записи в журнал.
Краткое описание свойств
Свойства, унаследованные от Cake\Controller\Component
$_componentMapsource
protected array
Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.
[]
$_registrysource
protected Cake\Controller\ComponentRegistry
Класс реестра компонентов, используемый для ленивой загрузки компонентов.
Свойства, используемые из Cake\Core\InstanceConfigTrait
$_configInitializedsource
protected boolean
Настройки конфигурации уже были сконфигурированы значениями по умолчанию
false
© 2005–2016 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.
http://api.cakephp.org/3.1/class-Cake.Controller.Component.RequestHandlerComponent.html