Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и тому подобное. Эти устройства не используют Ajax-запросы, и этот компонент может указать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.
- Объект
-
Компонент -
RequestHandlerComponent
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/components/request-handling.html
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Расположение: Cake/Controller/Component/RequestHandlerComponent.php
Краткое описание свойств
-
$_inputTypeMapprotectedarrayСопоставление расширений и десериализаторов для тел запросов данного типа. По умолчанию сопоставляются только JSON и XML, используйте RequestHandlerComponent::addInputType()
-
$_renderTypeprotectedШаблон, используемый при рендеринге заданного типа содержимого.string -
$_viewClassMapprotectedarrayСопоставление типа и класса представления. По умолчанию сопоставляются только JSON и XML, используйте RequestHandlerComponent::viewClassMap()
-
$ajaxLayoutpublicМакет, который будет переключен для Ajax-запросовstring -
$enabledpublicОпределяет, будут ли вызываться обратные вызовы для этого компонентаboolean -
$extpublicСодержит расширение файла, разобранное маршрутизаторомstring - Содержит ссылку на Controller::$request
$requestpublic - Содержит ссылку на Controller::$response
$responsepublic
Унаследованные свойства
Краткое описание методов
- __construct() publicКонструктор. Парсит принимаемые типы контента, указанные клиентом через HTTP_ACCEPT
- _setExtension() protected
Устанавливает расширение на основе заголовков accept. Сравнивает принимаемые типы и конфигурированные расширения. Если есть один общий тип, он назначается как тип ext/контента для ответа. Будет установлен тип с наивысшим весом. Если наивысший вес имеет более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если html является одним из предпочтительных типов, тип контента не будет установлен, чтобы избежать проблем с браузерами, которые предпочитают html и несколько других типов контента.
- accepts() public
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, обработанном маршрутизатором (если оно присутствует), и на заголовке HTTP_ACCEPT. В отличие от CakeRequest::accepts(), этот метод работает только с сопоставленными типами контента.
Использование:
$this->RequestHandler->accepts(array('xml', 'html', 'json'));Возвращает true, если клиент принимает любой из указанных типов.
$this->RequestHandler->accepts('xml');Возвращает true, если клиент принимает xml.
Параметры
- string|array
$typeoptional null Может быть null (или нет параметра), строковым именем типа или массивом типов
Возвращаемое значение
mixedЕсли передан null или отсутствует параметр, возвращает массив типов контента, которые принимает клиент. Если передана строка, возвращает true, если клиент ее принимает. Если передан массив, возвращает true, если клиент принимает один или несколько элементов из массива.
См. также
RequestHandlerComponent::setContent()
- string|array
- addInputType() public
Добавляет новый сопоставленный тип входных данных. Сопоставленные типы входных данных автоматически преобразуются RequestHandlerComponent во время обратного вызова startup().
- beforeRedirect() public
Обрабатывает (имитирует) перенаправления для AJAX-запросов с использованием requestAction(). Изменяет $_POST и $_SERVER['REQUEST_METHOD'] для имитации нового запроса GET.
- beforeRender() public
Проверяет, может ли ответ считаться отличным в соответствии с заголовками запроса и заголовками кеширования ответа. Если он не был изменен, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком "304 Not Modified".
- convertXml() public
Вспомогательный метод для анализа входных данных xml, из-за отсутствия анонимных функций он находится здесь.
- getAjaxVersion() public
Возвращает версию Prototype, если вызов AJAX, иначе пустую строку. Библиотека Prototype устанавливает специальный заголовок HTTP "Версия Prototype".
- getClientIP() publicПолучает IP удаленного клиента
- getReferer() publicПолучает имя сервера, с которого был получен данный запрос
- initialize() public
Проверяет, было ли расширение файла обработано маршрутизатором или если HTTP_ACCEPT_TYPE соответствует только одному типу контента с поддерживаемыми расширениями. Если существует только один совпадающий тип между поддерживаемыми типами контента и расширениями и запрошенными типами MIME, RequestHandler::$ext устанавливается в это значение.
- isAjax() publicВозвращает true, если текущий HTTP-запрос AJAX, иначе false
- isAtom() publicВозвращает true, если текущий вызов принимает ответ Atom, иначе false
- isDelete() publicВозвращает true, если текущий вызов - запрос DELETE
- isFlash() publicВозвращает true, если текущий HTTP-запрос поступает от Flash-клиента
- isGet() publicВозвращает true, если текущий вызов - запрос GET
- isMobile() public
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
- isPost() publicВозвращает true, если текущий вызов - запрос POST
- isPut() publicВозвращает true, если текущий вызов - запрос PUT
- isRss() publicВозвращает true, если текущий вызов принимает ответ RSS, иначе false
- isSSL() publicВозвращает true, если текущий запрос выполняется по протоколу HTTPS, иначе false.
- isWap() publicВозвращает true, если клиент принимает WAP-контент
- isXml() publicВозвращает true, если текущий вызов принимает ответ XML, иначе false
- mapAlias() publicПреобразует псевдоним типа контента обратно в его тип MIME
- mapType() publicПреобразует тип контента обратно в псевдоним
- prefers() public
Определяет, какие типы контента предпочитает клиент. Если параметры не заданы, возвращается единственный тип контента, который клиент, скорее всего, предпочитает. Если $type является массивом, возвращается первый элемент в массиве, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, обработанным маршрутизатором, если оно предоставлено, а во-вторых, списком типов контента, предоставленным в HTTP_ACCEPT.
- renderAs() publicУстанавливает макет и пути к шаблонам для типа контента, определенного $type.
- requestedWith() publicОпределяет тип контента данных, которые клиент отправил (например, в запросе POST)
- respondAs() public
Устанавливает заголовок ответа на основе имени индекса сопоставления типов. Оборачивает несколько методов, доступных в CakeResponse. Также позволяет использовать псевдонимы типов контента.
- responseType() publicВозвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
- setContent() public
Добавляет/устанавливает тип(ы) контента для данного имени. Этот метод позволяет сопоставлять типы контента с дружественными псевдонимами (или расширениями), что позволяет RequestHandler автоматически отвечать на запросы этого типа в методе startup.
- startup() public
Метод startup компонента RequestHandler обеспечивает несколько автоматических действий, связанных с определением определенных свойств HTTP-запроса, включая:
- viewClassMap() publicГеттер/сеттер для viewClassMap
Детали метода
__construct()source public
__construct( ComponentCollection $collection , array $settings array() )
Конструктор. Парсит принимаемые типы контента, указанные клиентом через HTTP_ACCEPT
Параметры
-
ComponentCollection$collection - Объект ComponentCollection.
- массив
$settingsoptional array() - Массив настроек.
Переопределяет
Component::__construct() _setExtension()source protected
_setExtension( )
accepts()source public
accepts( string|array $type null )
addInputType()source public
addInputType( string $type , array $handler )
Добавить новый тип входных данных. Картированные типы входных данных автоматически преобразуются компонентом RequestHandlerComponent во время обратного вызова startup().
Параметры
- строка
$type - Псевдоним типа, который преобразуется, например, json
- массив
$handler Массив обработчика для типа. Первый индекс должен быть обратным вызовом обработки, все остальные аргументы — дополнительные параметры для обработчика.
Исключения
CakeExceptionbeforeRedirect()source public
beforeRedirect( Controller $controller , string|array $url , integer|array $status null , boolean $exit true )
Обрабатывает (имитирует) перенаправления для Ajax-запросов с помощью requestAction(). Изменяет $_POST и $_SERVER['REQUEST_METHOD'], чтобы имитировать новый GET-запрос.
Параметры
-
Controller$controller - Ссылка на контроллер
- строка|массив
$url - Строка или массив, содержащие местоположение перенаправления
- целое число|массив
$statusнеобязательно null - HTTP-код статуса для перенаправления
- логическое значение
$exitнеобязательно true - Выход из скрипта, по умолчанию
true.
Переопределяет
Component::beforeRedirect() beforeRender()source public
beforeRender( Controller $controller )
Проверяет, можно ли считать ответ другим в соответствии с заголовками запроса и заголовками кеширования ответа. Если он не изменялся, процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
Параметры
-
Controller$controller - Экземпляр контроллера.
Возвращает
логическое значениеFalse, если процесс рендеринга должен быть прерван.
Переопределяет
Component::beforeRender() convertXml()source public
convertXml( string $xml )
Вспомогательный метод для разбора входных данных xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - XML-строка.
Возвращает
массивДанные xml-массива
getAjaxVersion()source public
getAjaxVersion( )
Получает версию Prototype, если вызов — Ajax, в противном случае пустую строку. Библиотека Prototype устанавливает специальный заголовок HTTP «Версия Prototype».
Возвращает
строка|логическое значениеПри Ajax версии прототипа компонента, вызвавшего запрос, в противном случае false
getClientIP()source public
getClientIP( boolean $safe true )
Получает удалённый IP-адрес клиента
Устарело
3.0.0 Используйте $this->request->clientIp() в вашем контроллере вместо этого.Параметры
- логическое значение
$safeнеобязательно true Используйте безопасный = false, если вы считаете, что пользователь может манипулировать заголовком HTTP_CLIENT_IP. Установка $safe = false также проверит HTTP_X_FORWARDED_FOR
Возвращает
строкаIP-адрес клиента
getReferer()source public
getReferer( )
Получает имя сервера, с которого был выполнен данный запрос
Устарело
3.0.0 Используйте $this->request->referer() в вашем контроллере вместо этогоВозвращает
строкаАдрес сервера
initialize()source public
initialize( Controller $controller )
Проверяет, был ли расширение файла проанализирован маршрутизатором, или если HTTP_ACCEPT_TYPE соответствует только одному типу контента с поддерживаемыми расширениями. Если между поддерживаемыми типами контента и расширениями, и запрошенными типами MIME существует только один совпадающий тип, RequestHandler::$ext устанавливается на это значение.
Параметры
-
Controller$controller - Ссылка на контроллер
См. также
Router::parseExtensions()Переопределяет
Component::initialize() isAjax()source public
isAjax( )
Возвращает true, если текущий HTTP-запрос является Ajax, в противном случае false
Устарело
3.0.0 Используйте$this->request->is('ajax') вместо этого.Возвращает
логическое значениеTrue, если вызов Ajax
isAtom()source public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае false
Возвращает
логическое значениеTrue, если клиент принимает ответ RSS
isDelete()source public
isDelete( )
Возвращает true, если текущий вызов — запрос DELETE.
Устарело
3.0.0 Используйте $this->request->is('delete'); в вашем контроллере.Возвращает
booleanTrue, если вызов является DELETE
isFlash()source public
isFlash( )
Возвращает true, если текущий HTTP-запрос поступает от клиента на основе Flash.
Устарело
3.0.0 Используйте$this->request->is('flash') вместо этого.Возвращает
booleanTrue, если вызов от Flash
isGet()source public
isGet( )
Возвращает true, если текущий вызов — запрос GET.
Устарело
3.0.0 Используйте $this->request->is('get'); в вашем контроллере.Возвращает
booleanTrue, если вызов является GET
isMobile()source public
isMobile( )
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Возвращает
booleanTrue, если user agent — мобильный веб-браузер
isPost()source public
isPost( )
Возвращает true, если текущий вызов — запрос POST.
Устарело
3.0.0 Используйте $this->request->is('post'); в вашем контроллере.Возвращает
booleanTrue, если вызов является POST
isPut()source public
isPut( )
Возвращает true, если текущий вызов — запрос PUT.
Устарело
3.0.0 Используйте $this->request->is('put'); в вашем контроллере.Возвращает
booleanTrue, если вызов является PUT
isRss()source public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false.
Возвращает
booleanTrue, если клиент принимает ответ RSS
isSSL()source public
isSSL( )
Возвращает true, если текущий запрос проходит по протоколу HTTPS, в противном случае — false.
Устарело
3.0.0 Используйте$this->request->is('ssl') вместо этого.Возвращает
booleanTrue, если вызов проходит по HTTPS
isXml()source public
isXml( )
Возвращает true, если текущий вызов принимает ответ XML, в противном случае false
Возвращает
booleanTrue, если клиент принимает ответ XML
mapAlias()source public
mapAlias( string|array $alias )
Преобразует псевдоним типа содержимого в MIME-тип(ы)
Параметры
- string|array
$alias - Псевдоним содержимого для преобразования в тип содержимого. Или массив псевдонимов для преобразования.
Возвращает
string|nullNull для неопределенного псевдонима. Строковое значение преобразованного типа псевдонима. Если псевдоним сопоставляется с несколькими типами содержимого, будет возвращен первый тип.
mapType()source public
mapType( string|array $cType )
Преобразует тип содержимого в псевдоним
Устарело
3.0.0 Используйте $this->response->mapType() в вашем контроллере вместо этого.Параметры
- string|array
$cType - Строка или массив типов содержимого.
Возвращает
string|arrayПсевдонимы для указанных типов.
prefers()source public
prefers( string|array $type null )
Определяет предпочитаемые типы содержимого клиента. Если нет параметров, возвращается единственный тип содержимого, который клиент, скорее всего, предпочитает. Если $type — массив, возвращается первый элемент массива, который принимает клиент. Предпочтения определяются главным образом расширением файла, проанализированным маршрутизатором, если он указан, и во вторую очередь списком типов содержимого, предоставленным в HTTP_ACCEPT.
Параметры
- string|array
$typeoptional null Необязательный массив «дружественных» имен типов содержимого, например, 'html', 'xml', 'js' и т. д.
Возвращает
mixedЕсли $type равен null или не указан, возвращается первый тип содержимого в списке в соответствии с предпочтениями. Если предоставлен один тип, возвращается boolean, если этот тип предпочтительнее. Если предоставлен массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.
См. также
RequestHandlerComponent::setContent()renderAs()source public
renderAs( Controller $controller , string $type , array $options array() )
Устанавливает пути шаблонов и макетов для типа содержимого, определенного $type.
Использование:
Отобразить ответ как ответ «ajax».
$this->RequestHandler->renderAs($this, 'ajax');
Отобразить ответ как файл xml и принудительно сохранить результат как файл для скачивания.
$this->RequestHandler->renderAs($this, 'xml', array('attachment' => 'myfile.xml');
Параметры
-
Controller$controller - Ссылка на объект контроллера
- string
$type - Тип ответа (например: «ajax»)
- array
$optionsoptional array() - Массив параметров
См. также
RequestHandlerComponent::setContent()RequestHandlerComponent::respondAs()
requestedWith()source public
requestedWith( string|array $type null )
Определяет тип содержимого данных, отправленных клиентом (например, в запросе POST).
Параметры
- string|array
$typeoptional null - Может быть null, строкой, именем типа или массивом типов
Возвращает
mixedЕсли указан один тип, возвращается boolean. Если тип не указан, возвращается сопоставленное значение CONTENT_TYPE. Если указан массив, возвращается первый тип в типе запроса.
respondAs()source public
respondAs( string|array $type , array $options array() )
Устанавливает заголовок ответа на основе имени индекса отображения типов. Это оболочка нескольких методов, доступных в CakeResponse. Также позволяет использовать псевдонимы типов содержимого.
Параметры
- string|array
$type Дружественное имя типа, например, 'html' или 'xml', или полный тип содержимого, например, 'application/x-shockwave'.
- array
$optionsoptional array() Если $type — дружественное имя типа, связанное с несколькими типами содержимого, $index используется для выбора типа содержимого.
Возвращает
booleanВозвращает false, если заданное в $type дружественное имя типа не существует в таблице типов или если заголовок Content-type уже был установлен этим методом.
См. также
RequestHandlerComponent::setContent()responseType()source public
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
Возвращает
mixedСтроковый псевдоним типа содержимого или тип содержимого в сыром виде, если таблица псевдонимов не существует, в противном случае null
setContent()source public
setContent( string $name , string|array $type null )
Добавляет/устанавливает тип(ы) содержимого для данного имени. Этот метод позволяет сопоставлять типы содержимого с дружественными псевдонимами (или расширениями), что позволяет RequestHandler автоматически отвечать на запросы этого типа в методе startup.
Устарело
3.0.0 Используйте$this->response->type() вместо этого.Параметры
- string
$name - Имя типа содержимого, например, «html», «xml», «css»
- string|array
$typeoptional null Тип содержимого или массив типов содержимого, назначенные имени, например, «text/html» или «application/xml»
startup()source public
startup( Controller $controller )
Метод startup компонента RequestHandler позволяет реализовать несколько автоматических действий, связанных с определением свойств HTTP-запроса, включая:
- Отключение отображения макета для Ajax-запросов (на основе заголовка HTTP_X_REQUESTED_WITH)
- Если Router::parseExtensions() включен, тип макета и шаблона изменяются на основе проанализированного расширения или заголовка Accept-Type. Например, если запрашивается
controller/action.xml, путь к представлению становитсяapp/View/Controller/xml/action.ctp. Также еслиcontroller/actionзапрашивается сAccept-Type: application/xmlв заголовках, путь к представлению станетapp/View/Controller/xml/action.ctp. Типы макета и шаблона будут переключаться только на MIME-типы, распознанные CakeResponse. Если вам нужно объявить дополнительные MIME-типы, вы можете сделать это, используя CakeResponse::type() в методе вашего контроллера beforeFilter(). - Если существует помощник с тем же именем, что и расширение, он добавляется к контроллеру.
- Если расширение относится к типу, понятому RequestHandler, он установит этот тип содержимого в заголовке ответа.
- Если XML-данные отправлены через POST, данные анализируются в XML-объект, который назначается свойству $data контроллера, которое затем можно сохранить в объекте модели.
Параметры
-
Controller$controller - Ссылка на контроллер
Переопределяет
Component::startup() viewClassMap()source public
viewClassMap( array|string $type null , array $viewClass null )
Геттер/сеттер для viewClassMap
Параметры
- array|string
$typeoptional null - Строка типа или массив с форматом
array('type' => 'viewClass')для сопоставления одного или нескольких - array
$viewClassoptional null - Класс представления, используемый для типа без
Viewв конце
Возвращает
array|stringВозвращает viewClass, когда указана только строка $type, в противном случае массив viewClassMap
Методы, унаследованные от Component
__get()source public
__get( string $name )
Магический метод для ленивой загрузки $components.
Параметры
- string
$name - Имя компонента для получения.
Возвращает
mixedОбъект Component или null.
shutdown()source public
shutdown( Controller $controller )
Вызывается после Controller::render() и перед выводом на браузер.
Параметры
-
Controller$controller - Контроллер с компонентами для завершения работы
Ссылка
http://book.cakephp.org/2.0/ru/controllers/components.html#Component::shutdownМетоды, унаследованные от Object
_mergeVars()source protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет свойства объекта $property со свойствами в определении $class. Значение свойства этого класса будет объединено поверх значения свойства $class.
Это обеспечивает некоторую магию DRY, предоставляемую CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Имя свойств для объединения.
- строка
$class - Класс для объединения свойства с.
- логическое значение
$normalizeнеобязательно true - Установите в значение true, чтобы запустить свойства через Hash::normalize() перед объединением.
_set()source protected
_set( array $properties array() )
Позволяет задать несколько свойств объекта в одной строке кода. Будут установлены только те свойства, которые являются частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stop()source protected
_stop( integer|string $status 0 )
Останов выполнения текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число или строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethod()source public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет объектно-ориентированный оберточный для call_user_func_array
Параметры
- строка
$method - Имя метода для вызова
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращаемое значение
mixedВозвращает результат вызова метода
log()source public
log( string $msg , integer $type LOG_ERR , null|string|array $scope null )
Удобный метод для записи сообщения в CakeLog. Дополнительную информацию о записи в журналы см. в CakeLog::write().
Параметры
- строка
$msg - Сообщение журнала
- целое число
$typeнеобязательно LOG_ERR - Константа типа ошибки. Определена в app/Config/core.php.
- null|строка|массив
$scopeнеобязательно null Область(и), в которой создаётся сообщение журнала. Дополнительную информацию о областях ведения журнала см. в CakeLog::config().
Возвращаемое значение
booleanУспешность записи в журнал
requestAction()source public
requestAction( string|array $url , array $extra array() )
Вызывает метод контроллера из любой точки. Может использоваться для подключения контроллеров друг к другу или связывания плагинов с основным приложением. requestAction может использоваться для возврата рендеренных представлений или извлечения возвращаемого значения из действий контроллера.
Под капотом этот метод использует Router::reverse() для преобразования параметра $url в строку URL. Вы должны использовать форматы URL, совместимые с Router::reverse().
Передача данных POST и GET
Данные POST и GET могут быть смоделированы в requestAction. Используйте $extra['url'] для данных GET. Параметр $extra['data'] позволяет моделировать данные POST.
Параметры
- строка|массив
$url Строка или массив URL. В отличие от других массивов URL в CakePHP, этот URL не будет автоматически обрабатывать переданные и именованные аргументы в параметре $url.
- массив
$extraнеобязательно array() Если массив включает ключ "return", он устанавливает AutoRender в true. Также может использоваться для отправки данных GET/POST и именованных/переданных аргументов.
Возвращаемое значение
mixedЛогическое значение true или false при успехе/неудачи или содержимое рендерного действия, если в $extra установлен ключ 'return'.
toString()source public
toString( )
Преобразование объекта в строку. Каждый класс может переопределить этот метод по мере необходимости.
Возвращаемое значение
строкаИмя этого класса
Подробности свойств
$_inputTypeMapsource
protected массив
Сопоставление расширений и десериализаторов для тел запроса данного типа. По умолчанию сопоставлены только JSON и XML, используйте RequestHandlerComponent::addInputType()
array(
'json' => array('json_decode', true)
) $_renderTypesource
protected строка
Шаблон для использования при рендеринге заданного типа содержимого.
null
$_viewClassMapsource
protected массив
Сопоставление типа и viewClass. По умолчанию сопоставлены только JSON и XML, используйте RequestHandlerComponent::viewClassMap()
array(
'json' => 'Json',
'xml' => 'Xml'
) $ajaxLayoutsource
public строка
Макет, который будет переключён для Ajax-запросов
См.
RequestHandler::setAjax()'ajax'
$enabledsource
public логическое значение
Определяет, будут ли вызываться обратные вызовы для этого компонента
true
$extsource
public строка
Содержит расширение файла, разобранное Router
См.
Router::parseExtensions()null
© 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/2.8/class-RequestHandlerComponent.html