Класс RequestHandlerComponent
Объект запроса для обработки альтернативных HTTP-запросов
Альтернативные HTTP-запросы могут поступать от беспроводных устройств, таких как мобильные телефоны, карманные компьютеры и т. п. Эти устройства не используют Ajax-запросы, и этот компонент может указать, как Cake должен реагировать на различные потребности карманного компьютера и настольного компьютера.
- Объект
-
Компонент -
RequestHandlerComponent
Авторские права: Copyright (c) Cake Software Foundation, Inc. (http://cakefoundation.org)
Лицензия: Лицензия MIT
Ссылка: http://book.cakephp.org/2.0/ru/core-libraries/components/request-handling.html
Расположен в Cake/Controller/Component/RequestHandlerComponent.php
Подробное описание методов
__constructsource public
__construct( ComponentCollection $collection , array $settings array() )
Конструктор. Парсит допустимые типы контента, принятые клиентом, используя HTTP_ACCEPT
Параметры
-
ComponentCollection$collection - Объект ComponentCollection.
- массив
$settingsнеобязательно array() - Массив настроек.
Переопределяет
Component::__construct() _setExtensionsource protected
_setExtension( )
Устанавливает расширение на основе заголовков accept. Сравнивает принятые типы и настроенные расширения. Если есть один общий тип, он назначается как ext/тип контента для ответа. Будет установлен тип с наивысшим весом. Если наивысший вес имеет более одного типа, соответствующего расширениям, порядок, в котором указаны расширения, определяет, какой тип будет установлен.
Если html является одним из предпочтительных типов, тип контента не будет установлен, это для предотвращения проблем с браузерами, которые предпочитают html и несколько других типов контента.
acceptssource public
accepts( string|array $type null )
Определяет, какие типы контента принимает клиент. Принятие основано на расширении файла, проанализированном маршрутизатором (если оно присутствует), и на заголовке HTTP_ACCEPT. В отличие от CakeRequest::accepts(), этот метод полностью работает с сопоставленными типами контента.
Использование:
$this->RequestHandler->accepts(array('xml', 'html', 'json'));
Возвращает true, если клиент принимает любой из предоставленных типов.
$this->RequestHandler->accepts('xml');
Возвращает true, если клиент принимает xml.
Параметры
- строка|массив
$typeнеобязательно null - Может быть null (или без параметра), имя типа строки или массив типов
Возвращает
mixedЕсли передан null или нет параметра, возвращает массив типов контента, которые принимает клиент. Если передана строка, возвращает true, если клиент ее принимает. Если передан массив, возвращает true, если клиент принимает один или несколько элементов в массиве.
См. также
RequestHandlerComponent::setContent()addInputTypesource public
addInputType( string $type , array $handler )
Добавляет новый сопоставленный тип ввода. Сопоставленные типы ввода автоматически преобразуются RequestHandlerComponent во время обратного вызова startup().
Параметры
- строка
$type - Псевдоним типа, который преобразуется, например json
- массив
$handler - Массив обработчиков для типа. Первый индекс должен быть обратным вызовом обработки, все остальные аргументы должны быть дополнительными параметрами для обработчика.
Выбрасывает
CakeExceptionCakeException
beforeRedirectsource 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-статус перенаправления
- boolean
$exitнеобязательно true - Выход из скрипта, по умолчанию
true.
Переопределяет
Component::beforeRedirect() beforeRendersource public
beforeRender( Controller $controller )
Проверяет, может ли ответ считаться разным в соответствии с заголовками запроса и заголовками кэширования ответа. Если он не был изменен, то процесс рендеринга пропускается. И клиент получит пустой ответ с заголовком «304 Not Modified».
Параметры
-
Controller$controller - Экземпляр контроллера.
Возвращает
booleanFalse, если процесс рендеринга должен быть прерван.
Переопределяет
Component::beforeRender() convertXmlsource public
convertXml( string $xml )
Вспомогательный метод для парсинга входных данных xml, из-за отсутствия анонимных функций он находится здесь.
Параметры
- строка
$xml - Строка XML.
Возвращает
arrayДанные массива Xml
getAjaxVersionsource public
getAjaxVersion( )
Получает версию Prototype, если вызов является Ajax, в противном случае пустая строка. Библиотека Prototype устанавливает специальный заголовок HTTP «Версия Prototype».
Возвращает
string|booleanЕсли Ajax, версия prototype компонента, вызвавшего метод, в противном случае false
getClientIPsource public
getClientIP( boolean $safe true )
Получает удаленный IP-адрес клиента
Устарело
3.0.0 Используйте $this->request->clientIp() из вашего контроллера вместо этого.Параметры
- boolean
$safeнеобязательно true - Используйте safe = false, если вы считаете, что пользователь может изменить заголовок HTTP_CLIENT_IP. Установка $safe = false также проверит HTTP_X_FORWARDED_FOR
Возвращает
stringIP-адрес клиента
getReferersource public
getReferer( )
Получает имя сервера, с которого был получен этот запрос
Устарело
3.0.0 Используйте $this->request->referer() из вашего контроллера вместо этого.Возвращает
stringАдрес сервера
initializesource public
initialize( Controller $controller )
Проверяет, было ли расширение файла обработано маршрутизатором, или если HTTP_ACCEPT_TYPE соответствует только одному типу контента с поддерживаемыми расширениями. Если существует только один соответствующий тип между поддерживаемыми типами контента и расширениями, а также запрошенными MIME-типами, RequestHandler::$ext устанавливается в это значение.
Параметры
-
Controller$controller - Ссылка на контроллер
См. также
Router::parseExtensions()Переопределяет
Component::initialize() isAjaxsource public
isAjax( )
Возвращает true, если текущий HTTP-запрос является Ajax, в противном случае false
Устарело
3.0.0 Используйте$this->request->is('ajax') вместо этого.Возвращает
booleanTrue, если вызов является Ajax
isAtomsource public
isAtom( )
Возвращает true, если текущий вызов принимает ответ Atom, в противном случае false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isDeletesource public
isDelete( )
Возвращает true, если текущий вызов — запрос DELETE
Устарело
3.0.0 Используйте $this->request->is('delete'); из вашего контроллера.Возвращает
booleanTrue, если вызов — DELETE
isFlashsource public
isFlash( )
Возвращает true, если текущий HTTP-запрос поступает от клиента на основе Flash
Устарело
3.0.0 Используйте$this->request->is('flash') вместо этого.Возвращает
booleanTrue, если вызов от Flash
isGetsource public
isGet( )
Возвращает true, если текущий вызов — запрос GET
Устарело
3.0.0 Используйте $this->request->is('get'); из вашего контроллера.Возвращает
booleanTrue, если вызов — GET
isMobilesource public
isMobile( )
Возвращает true, если строка user agent соответствует мобильному веб-браузеру или если клиент принимает WAP-контент.
Возвращает
booleanTrue, если user agent — мобильный веб-браузер
isPostsource public
isPost( )
Возвращает true, если текущий вызов — запрос POST
Устарело
3.0.0 Используйте $this->request->is('post'); из вашего контроллера.Возвращает
booleanTrue, если вызов — POST
isPutsource public
isPut( )
Возвращает true, если текущий вызов — запрос PUT
Устарело
3.0.0 Используйте $this->request->is('put'); из вашего контроллера.Возвращает
booleanTrue, если вызов — PUT
isRsssource public
isRss( )
Возвращает true, если текущий вызов принимает ответ RSS, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ RSS
isSSLsource public
isSSL( )
Возвращает true, если текущий запрос выполняется через HTTPS, в противном случае — false.
Устарело
3.0.0 Используйте$this->request->is('ssl') вместо этого.Возвращает
booleanTrue, если вызов выполняется через HTTPS
isWapsource public
isWap( )
Возвращает true, если клиент принимает WAP-контент
Возвращает
booleanbool
isXmlsource public
isXml( )
Возвращает true, если текущий вызов принимает ответ XML, в противном случае — false
Возвращает
booleanTrue, если клиент принимает ответ XML
mapAliassource public
mapAlias( string|array $alias )
Преобразует псевдоним типа контента в MIME-тип(ы)
Параметры
- строка|массив
$alias - Псевдоним типа контента для преобразования в тип содержимого. Или массив псевдонимов для преобразования.
Возвращает
string|nullNull при неопределенном псевдониме. Строковое значение сопоставленного типа псевдонима. Если псевдоним сопоставляется с несколькими типами содержимого, будет возвращен первый.
mapTypesource public
mapType( string|array $cType )
Преобразует тип содержимого обратно в псевдоним
Устарело
3.0.0 Используйте $this->response->mapType() в вашем контроллере вместо этого.Параметры
- строка|массив
$cType - Тип содержимого для сопоставления (строка) или массив типов.
Возвращает
string|arrayПсевдонимы для указанных типов.
preferssource public
prefers( string|array $type null )
Определяет, какие типы содержимого предпочтительны для клиента. Если параметры не заданы, возвращается единственный тип содержимого, который клиент предпочтительнее всего. Если $type — массив, возвращается первый элемент массива, который клиент принимает. Предпочтение определяется в первую очередь расширением файла, проанализированным маршрутизатором (если задано), а во-вторых — списком типов содержимого, предоставленным в HTTP_ACCEPT.
Параметры
- строка|массив
$typeнеобязательно null - Необязательный массив «дружественных» имён типов содержимого, например, «html», «xml», «js» и т. д.
Возвращает
mixedЕсли $type равен null или не задан, возвращается первый тип содержимого в списке, основанный на предпочтениях. Если задан единственный тип, возвращается булево значение, указывающее, предпочтительно ли этот тип. Если задан массив типов, возвращается первый предпочтительный тип. Если тип не указан, возвращается первый предпочтительный тип.
См. также
RequestHandlerComponent::setContent()renderAssource 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 - Ссылка на объект контроллера
- строка
$type - Тип ответа (например: «ajax»)
- массив
$optionsнеобязательно массив() - Массив опций для использования
См. также
RequestHandlerComponent::setContent()RequestHandlerComponent::respondAs()requestedWithsource public
requestedWith( string|array $type null )
Определяет тип содержимого данных, отправленных клиентом (например, в запросе POST)
Параметры
- строка|массив
$typeнеобязательно null - Может быть null (или без параметра), строковым именем типа или массивом типов
Возвращает
mixedЕсли предоставлен один тип, будет возвращено булево значение. Если тип не указан, будет возвращено сопоставленное значение CONTENT_TYPE. Если указан массив, будет возвращен первый тип содержимого запроса.
respondAssource public
respondAs( string|array $type , array $options array() )
Устанавливает заголовок ответа на основе имени индекса карты типов. Это оборачивает несколько методов, доступных в CakeResponse. Также позволяет использовать псевдонимы типов содержимого.
Параметры
- строка|массив
$type - Дружественное имя типа, например, «html» или «xml», или полный тип содержимого, например, «application/x-shockwave».
- массив
$optionsнеобязательно массив() - Если $type — дружественное имя типа, связанное с несколькими типами содержимого, $index используется для выбора типа содержимого для использования.
Возвращает
booleanВозвращает false, если дружественное имя типа, заданное в $type, не существует в карте типов или если заголовок Content-type уже был установлен этим методом.
См. также
RequestHandlerComponent::setContent()responseTypesource public
responseType( )
Возвращает текущий тип ответа (заголовок Content-type) или null, если псевдоним не существует
Возвращает
mixedСтроковый псевдоним типа содержимого или тип содержимого в сыром виде, если карта псевдонима не существует, иначе null
setContentsource public
setContent( string $name , string|array $type null )
Добавляет/устанавливает тип(ы) содержимого для данного имени. Этот метод позволяет сопоставлять типы содержимого с дружественными псевдонимами (или расширениями), что позволяет RequestHandler автоматически отвечать на запросы этого типа в методе startup.
Устаревший
3.0.0 Используйте$this->response->type() вместо этого.Параметры
- строка
$name - Имя типа содержимого, например, "html", "xml", "css"
- строка|массив
$typeнеобязательно null - Тип содержимого или массив типов содержимого, назначенных имени, например, "text/html" или "application/xml"
startupsource 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() viewClassMapsource public
viewClassMap( array|string $type null , array $viewClass null )
Геттер/сеттер для viewClassMap
Параметры
- массив|строка
$typeнеобязательно null - Строка типа или массив с форматом
array('type' => 'viewClass')для сопоставления одного или нескольких - массив
$viewClassнеобязательно null - Представление класса, используемое для типа без добавления
View
Возвращает
array|stringВозвращает viewClass, когда задана только строка $type, в противном случае массив с viewClassMap
Наследованные методы из Component
__getsource public
__get( string $name )
Магический метод для леничной загрузки $components.
Параметры
- строка
$name - Имя компонента для получения.
Возвращает
mixedОбъект компонента или null.
shutdownsource public
shutdown( Controller $controller )
Вызывается после Controller::render() и перед выводом на экран браузера.
Параметры
-
Controller$controller - Контроллер с компонентами для завершения работы
Ссылка
http://book.cakephp.org/2.0/en/controllers/components.html#Component::shutdownНаследованные методы из Object
_mergeVarssource protected
_mergeVars( array $properties , string $class , boolean $normalize true )
Объединяет $property этого объекта со свойством в определении $class. Значение этого класса для свойства будет объединено поверх $class'
Это обеспечивает некоторую часть DRY-магии CakePHP. Если вы хотите отключить её, переопределите этот метод как пустую функцию.
Параметры
- массив
$properties - Имя свойств для объединения.
- строка
$class - Класс для объединения свойства с.
- булево
$normalizeнеобязательно true - Установите в значение true, чтобы запустить свойства через Hash::normalize() перед объединением.
_setsource protected
_set( array $properties array() )
Позволяет задавать несколько свойств объекта в одной строке кода. Будут установлены только свойства, являющиеся частью объявления класса.
Параметры
- массив
$propertiesнеобязательно array() - Ассоциативный массив, содержащий свойства и соответствующие значения.
_stopsource protected
_stop( integer|string $status 0 )
Останавливает выполнение текущего скрипта. Оборачивает exit(), что упрощает тестирование.
Параметры
- целое число|строка
$statusнеобязательно 0 - см. http://php.net/exit для значений
dispatchMethodsource public
dispatchMethod( string $method , array $params array() )
Вызывает метод этого объекта с заданными параметрами. Предоставляет ОО-обёртку для call_user_func_array
Параметры
- строка
$method - Имя вызываемого метода
- массив
$paramsнеобязательно array() - Список параметров для использования при вызове $method
Возвращает
mixedВозвращает результат вызова метода
logsource 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Успешность записи в журнал
requestActionsource 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 при успехе/неудаче или содержимое рендерного действия, если 'return' установлен в $extra.
toStringsource public
toString( )
Преобразование объекта в строку. Каждый класс может по необходимости переопределять этот метод.
Возвращает
stringИмя этого класса
Краткое описание свойств
Свойства, унаследованные от Component
$_Collectionsource
protected ComponentCollection
Класс коллекции компонентов, используемый для ленивой загрузки компонентов.
$_componentMapsource
protected array
Таблица поиска компонентов, используемая для ленивой загрузки объектов компонентов.
array()
© 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.7/class-RequestHandlerComponent.html